git - 合并分支的差异

时间:2011-09-29 08:53:05

标签: git merge git-rebase

我有三个分支A,B和C. B经常合并到C。

          o---o---o A
         /
--------o---o---o---o---o---o B
         \       \       \   \
          o---o---o---o---o---o C

现在我想合并我在C中所做的更改,但没有来自B的合并,在A之上。 在git中最简单的方法是什么?

3 个答案:

答案 0 :(得分:8)

使用git rebase。

首先,在B:

之上修改你的C
git checkout C
git checkout -b rebasedC #Let's do a new branch for it also, just in case
git rebase B

它会将所有C提交放到B. 现在我们希望移植分支rebasedC从B到A:

git rebase --onto A B rebasedC

所以,现在你在rebasedC分支中将你的C-commit放在A之上。现在你可以快速转发你的A:

git checkout A
git merge rebasedC
git branch -d rebasedC# I don't think you would need it.

这就是全部,我希望。

答案 1 :(得分:2)

如果我理解正确,你想从C进行一些提交。

如果是这样的话,为什么不“挑选”它们呢?它可能导致冲突,但我认为这是你最好的机会:)。

http://schacon.github.com/git/git-cherry-pick.html

http://schacon.github.com/git/user-manual.html#reordering-patch-series

答案 2 :(得分:1)

您可以尝试cherry-picking C的非合并补丁。准备好处理合并冲突。 :)