4

我发现自己有时会这样做:

git rebase -i HEAD~2

这向我展示了两个提交,HEAD~1并且HEAD. 我更改pickf修复HEADHEAD~1. 现在,我将我最近的两个提交合并为一个提交,该提交仅包含来自旧提交的提交消息。

是否有命令/快捷方式/选项可以快速执行此操作?

如果我想将最近的三个提交修复为第四个最近的提交怎么办?

我能找到的唯一解决方案是编写一个为您执行此操作的脚本。但我正在寻找已经内置在 git 中的东西。

4

1 回答 1

4

一种解决方案是使用git reset HEAD~1. 这将删除最后一次提交并将其更改放在您的暂存区域。然后,您可以使用git commit --amend -a --no-edit. 该--no-edit标志使其使用相同的提交消息。

请注意,只有当您有一个干净的工作目录时才能执行此操作。否则,您会将所有未提交的更改压缩到同一个提交中。

它以这个单行结束,您可以输入别名以方便使用:

git reset HEAD~1 && git commit --amend -a --no-edit

作为 git 别名:

git config --global alias.squashLast2 '!git reset HEAD~1 && git commit --amend -a --no-edit'
于 2018-07-19T20:38:51.513 回答