考虑以下场景:
- 我从 master 签出了一个分支
- 我做了一些承诺
- 我合并了更新的主人
- 我做了更多的承诺
- 现在我想从第 4 点重新提交提交,以便第 2 点的提交不受影响。
所以如果我最初有:
(1) (2)
x--x--x--x--x--x--x master
\ \
y--y--Y--y--y dev
(2)(3) (4)
我想得到:
(1) (2)
x--x--x--x--x--x--x master
\ \
y--y--------Y'--y'--y' dev
(2) (5) (5)
如果我只是这样做git rebase master
,它将从 2 和 4 重新提交并从 3 删除合并。这不是我想要的。
还有一个选项要做git merge master
,然后git rebase -i -p
在从 3 合并提交之前并在从 3 合并之后移动最后一个合并,然后将其修复/压缩到从 3 的合并中。更新:它并不那么容易。Git 拒绝压缩两个合并。这个问题:git rebase interactive: squash merge commits together。