分为三步。最简单的:
git rebase -i origin/master
1、选择提交
1.1、按个数选择
基本命令:
git rebase -i HEAD~39
其中 39 是你要压缩的提交个数,从最近一次往前数。如果你想压缩没有同步到远程的所有提交,有个简单的方法,直接输入git status
查看结果:
$ git status
On branch master
Your branch is ahead of 'origin/master' by 39 commits.
(use "git push" to publish your local commits)
上面结果中的 39 就是我们所需要的个数值。
1.2、按 hash 值或标签来选择
git rebase -i HEAD~39
需要数个数,还有一种方法是提供选择范围前一个提交的 hash (压缩范围不包括这个提交):
git rebase -i xxyyzz
GIT 的标签可以替代 hash 值,因此下面这样也是可以的,如果要压缩没有同步到远程的所有本地提交,这个是最简单的命令:
git rebase -i origin/master
2、选择和压缩
这时你的编辑器会有弹窗,显示出你想要合并的提交列表。类似于下面的:
pick xxxxxx done 1
pick yyyyyy done 2
pick zzzzzz done 3
我们需要将除了第一个 pick ,其它的 pick 都改成 s (表示 squash ,压缩)。可以用 vim 的快速替换,然后再把第一个 pick 改回来。
pick xxxxxx done 1
s yyyyyy done 2
s zzzzzz done 3
保存文件后直接退出即可。
3、创建新的提交
现在 GIT 已经把多个提交压缩成一个了,然后弹出提交注释编辑框,默认是所有提交的注释合起来。可以直接编辑,然后保存退出即可。
Q. E. D.