git - 合并分支的差异

bbu*_*ser 10 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
Run Code Online (Sandbox Code Playgroud)

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

kan*_*kan 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
Run Code Online (Sandbox Code Playgroud)

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

git rebase --onto A B rebasedC
Run Code Online (Sandbox Code Playgroud)

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

git checkout A
git merge rebasedC
git branch -d rebasedC# I don't think you would need it.
Run Code Online (Sandbox Code Playgroud)

这就是全部,我希望.

  • Rebase做到了.然后你在B之上移动提交,显然C不再需要合并,所以它们被删除了. (3认同)
  • 我用我的git尝试过,现在我有了树形结构:http://files.rsdn.ru/20380/git.png(这里的A分支命名为'master'). (2认同)