git rebase相当于merge --squash

时间:2015-10-03 11:02:53

标签: git

我的手上有一个相当凌乱的树枝。它经历了几次

的实例
git merge master

如果我做了很多压扁的git rebase -i,我将不得不重新修复我在合并中解决的冲突。

我的印象是

git checkout master
git merge --squash

最终会得到所需的结果而无需手动重新合并。是我最好的选择:

git checkout master
git checkout -b clean-new-branch
git merge --squash my-messy-branch

并将我的分支重置到clean-new-branch的末尾,放弃了我之前的历史记录?

1 个答案:

答案 0 :(得分:1)

假设您有以下历史记录:

     master               my-messy-branch
        ↓                        ↓
-- C -- C -- M -- M -- M -- M -- M

C是“干净”(或好)提交,而M是“凌乱”提交,并且您希望得到以下结果:

     master   my-messy-branch
        ↓       ↙
-- C -- C --- C

然后这样做非常简单,无需手动压缩所有提交的交互式rebase。相反,你可以在凌乱的分支上进行软重置:

git checkout my-messy-branch
git reset --soft master
git commit

这将为那些M提交中的所有更改创建一个提交。