将N个提交压缩到单个提交中有两种方式:
git reset
git reset的本意是版本回退,回退时可以选择保留commit提交。我们基于git reset的作用,结合新建分支,可以实现多次commit提交的合并。这个不需要vim编辑,很少有冲突。
如果要从头开始编写新的提交消息,请使用以下命令:
git reset –soft HEAD~N &&
git commit
git rebase
git rebase会打开一个vim文本编辑器(需要会修改保存和退出),显示了最近的 n 个提交记录。每个提交前面都有一个 pick 关键字,表示保留该提交。若要合并两个相邻的提交,只需删除第二个提交之前的 pick 关键字,改为 squash 或 s。同样,若要合并更多的提交,只需按照上述操作修改对应的提交行。
git rebase -i HEAD~n
n表示合并多少条,HEAD是对应commit的hash的值