我有以下情况:
有一个名为" MASTER"的回购。 Fork" MASTER"创建" FORK_MASTER"。
假设有10个提交被推进" MASTER"并推出了两个提交" FORK_MASTER"。
现在我想更新FORK。如何实现呢?
我尝试做同样的事情。我做了以下步骤来实现这个目标: 1)设置上游为" FORK_MASTER"到" MASTER"。 2)git fetch upstream 3)git rebase上游/开发 4)git push origin
但是git在第3步之后引发冲突,即git rebase上游/开发。
期待听到如何实现这一目标。
答案 0 :(得分:1)
由于MASTER是主要仓库(FORK_MASTER为MASTER仓库做出贡献),您应首先从MASTER仓库中提取更改,然后从顶部的FORK_MASTER中修改更改。
假设本地repo开发分支提交历史记录如下:
…---A---B develop
对于MASTER repo,有10个提交C1
到C10
被推送。对于FORK_MASTER repo,有2个提交D1
和D2
被推送。
通常的工作流程是将更改推送到FORK_MASTER,然后创建拉取请求以将FORK_MASTER / develop合并到MASTER / develop(因为在FORK_MASTER仓库上工作的人通常不是MASTER仓库的管理员):
# In local FORK_MASTER repo
git remote add upstream https://github.com/user/MASTER -f
git checkout develop
git pull origin develop
git pull upstream develop --rebase
git push -f origin develop
提交历史记录将是:
…---A---B---C1---C2---…---C10---D1---D2 develop, origin/develop
|
upstream/develop
现在FORK_MASTER仓库已更新。您还可以通过创建拉动请求来更新MSTAER仓库,以将FORK_MASTER / develop合并到MASTER / develop中。或者,如果您有权将更改推送到MASTER仓库,则可以通过git push upstream master
直接推送到MASTER仓库。
注意:当rebase在D1
的顶部提交D2
和upstream/develop
时,如果存在冲突,您可以手动修改并保存冲突文件,然后使用git add .
和git rebase --continue
。
答案 1 :(得分:0)
我使用以下命令解决了这个问题:
git remote -v (检查原始仓库位置)
git remote add upstream (添加上游repo路径)
git fetch upstream (从上游仓库获取分支)
git merge upstream / --allow-unrelated-histories -X our -m"更新分支" (将更改从上游分支合并到分叉分支)
git push -f origin --all (将更改推送到分支分支)
使用这些命令,我成功地能够更新分叉分支。