我有三个分支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中最简单的方法是什么?
答案 0 :(得分:8)
使用git rebase。
首先,在B:
之上修改你的Cgit 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的非合并补丁。准备好处理合并冲突。 :)