我有一个上游git存储库(远程),它有一个master和几个分支,但只有一个分支对于手头的讨论很重要:
上游:
x-------y--------> master
\
\
----z-----> develX
然后我从x上游克隆了我自己的repo。
x--------y---------> master
\
\
-----z-------> develY
develY是我自己的工作分支和来自develX的补丁(z)。我的主人有点迷失了。它有来自上游主机的补丁(y)以及一些调整,试图让它与我的一些补丁一起工作,但它实际上是一个丢失的情况而且没有工作。
所以我决定使它与develY完全相同: $ git checkout develY $ git merge -s我们的主人 $ git checkout master $ git merge develY $ git push
所以现在master与develY完全相同。但是,我真正想要的是使用develY(现在也是我的主人)中的更改将我的主人与上游主人同步。
我最初认为我要将上游主服务器的更改重新设置为我的主服务器,但是有大约6000个提交在上游进行rebase,并且没有办法可以正常工作。有几个问题似乎使这个案例比我最初的想法更复杂:
git merge-base master upstream/master
将补丁y显示为最后一个共同祖先,但是此补丁实际上并不在主补丁中,因为它已通过合并恢复。关于如何尽可能干净利落的任何建议让我的主人与上游/主人同步,以及我的发展变化?
答案 0 :(得分:0)
我认为你必须在git merge origin/master
中进行master
。
当你说“无法解决”时,你的意思是什么?有两个冲突?如果存在真正的冲突并且您需要两组更改,那么您确实必须通过手动编辑来解决它们。
git rebase
是我采取的路线,以便我git fetch
最新的主人,然后在我的工作之上重新安排工作并解决出现的冲突。我经常首先使用git rebase -i HEAD~10
来压缩/重新排序/删除我的分支提交。