将分支与之前的提交解开并合并

时间:2012-09-28 12:01:58

标签: git

我有一个上游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,并且没有办法可以正常工作。有几个问题似乎使这个案例比我最初的想法更复杂:

  • develY(并且在我合并并推送master之后的master)有来自上游develX的一些补丁,这些补丁可能不存在于上游master中;
  • 我的主人有一些来自上游大师的提交,由于我们的develY合并而被还原;
  • 由于上述观点,git merge-base master upstream/master将补丁y显示为最后一个共同祖先,但是此补丁实际上并不在主补丁中,因为它已通过合并恢复。

关于如何尽可能干净利落的任何建议让我的主人与上游/主人同步,以及我的发展变化?

1 个答案:

答案 0 :(得分:0)

我认为你必须在git merge origin/master中进行master

当你说“无法解决”时,你的意思是什么?有两个冲突?如果存在真正的冲突并且您需要两组更改,那么您确实必须通过手动编辑来解决它们。

git rebase是我采取的路线,以便我git fetch最新的主人,然后在我的工作之上重新安排工作并解决出现的冲突。我经常首先使用git rebase -i HEAD~10来压缩/重新排序/删除我的分支提交。