git - Fork的项目如何跟源保持一致
淡淡烟草味
淡淡烟草味 2017-05-02 09:39:14
[Git讨论组]

背景是这样的 我从别人的仓库fork了一份到自己的仓库 然后在自己的仓库里新建分支并且在上面进行工作
现在别人的仓库主干更新了 我需要更新到本地并且提交到自己的仓库
看了网上的方法说用 git remote add name location
然后 git pull name master
然后在 push 到自己的仓库里
但是我push的时候就这样了 小白求问

淡淡烟草味
淡淡烟草味

全部回复(2)
淡淡烟草味

如果你想要更新你的fork的master branch,你应该先git checkout master, 然后再pull。这样pull之后就可以push 到 origin master了。

如果你只是想更新一下你当前的wuninghan.banbranch:

  1. 如果你当前的修改还没有commit,那就先git stash。如果已经commit 过,就接着进行下一步。这时候可以用git status来查看Staging Area是否有代码。

  2. 这一步做法可以由很多种,我习惯是先git fetch --all,然后git rebase ruoxue/master。当然,你也可以直接git pull --rebase,一个道理。

  3. 如果你在第一步stash了,那么这时候就git stash apply stash@{0} (理论上是0,如果你做了上面一次stash)

如果第二步有conflicts,处理就好了。

PHPz

就拿vuejs-templates/webpack来做例子,因为自己就在fork这个vue项目模板做改动

再来我觉得这个项目有其特殊性,它的主分支并不是master,而是dist,而加载模板的工具vue-cli默认会下载dist分支下的文件作为项目模板.

这就有以下情况

  • 为了方便,还是直接在dist上进行改动,这样使用vue-cli可以敲少几个字

  • 而在dist上进行改动,实际是出于自己的需求,并不希望提交proriginal repo,同时又希望能有一个分支用于保持跟original repo一致,且同时用于提交pr

我会在fork之后在dist分支的基础上新建一个track-1分支
具体步骤如下

# 创建track-1分支
git checkout -b track-1 dist

# 添加origin repo remote
git remote add original https://github.com/vuejs-templates/webpack.git

# ....这里是开发时间...
# 1.对dist做自己的改动,同时origin repo有更新,希望保持更新

# 把original所有数据拉下来
git fetch original

# 切回track-1分支
git checkout track-1

# 把original主分支rebase到track-1分支
git rebase original/dist

# 切换回fork的dist分支
git checkout dist

# 合并track-1分支的更新
# 这里没用rebase而是用merge,因为感觉这个用rebase比较繁琐,实际上应该用哪个我也不清楚
git merge track-1

# ...解决冲突等等...
# git push

# ....这里是开发时间...
# 2.对track-1做改动,希望提交pr给original repo

# 把改动提交,提交前需要确认分支为最新状态
# git fetch original
# git rebase original/dist
git push

# ...接下来就是上github进行操作...

# 假如已合并pr的话,在切回dist分支
git checkout dist
git merge track-1

好像还是略显繁琐,不知道这样的流程是否合理

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号