0

Git 压缩多个 commits 提交

 2 years ago
source link: https://zhiqiang.org/it/git-zip-multi-commits.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

分为三步。最简单的:

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 改回来。

保存文件后直接退出即可。

3、创建新的提交

现在 GIT 已经把多个提交压缩成一个了,然后弹出提交注释编辑框,默认是所有提交的注释合起来。可以直接编辑,然后保存退出即可。

Q. E. D.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK