git - Fork的项目如何跟源保持一致
淡淡烟草味
淡淡烟草味 2017-05-02 09:39:14
0
2
739

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

淡淡烟草味
淡淡烟草味

Antworte allen(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,处理就好了。

PHPzhong

就拿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

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage