我发现自己有时会这样做:
git rebase -i HEAD~2
这显示了两个提交HEAD~1
和HEAD
。我将pick
更改为f
,将HEAD
修复为HEAD~1
。现在,我将两个最近的提交合并到一个提交中,仅包含来自较早提交的提交消息。
是否有命令/快捷方式/选项可以快速执行此操作?
如果我想将最近的三个提交修改为最近的第四次提交怎么办?
我唯一能找到的解决方案是编写一个脚本为您完成此任务。但是我正在寻找git中已经内置的东西。
答案 0 :(得分:1)
一种解决方案是使用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'