git是否有快捷命令将HEAD固定到HEAD〜1

时间:2018-07-19 17:50:11

标签: git rebase interactive git-rebase fixup

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

git rebase -i HEAD~2

这显示了两个提交HEAD~1HEAD。我将pick更改为f,将HEAD修复为HEAD~1。现在,我将两个最近的提交合并到一个提交中,仅包含来自较早提交的提交消息。

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

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

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

1 个答案:

答案 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'