我发现自己有时会这样做:
git rebase -i HEAD~2
这显示了两个提交,HEAD~1
和 HEAD
。我将 pick
更改为 f
以将 HEAD
修复为 HEAD~1
。现在,我将最近的两个提交 merge 为一个提交,该提交仅包含来自旧提交的提交消息。
是否有命令/快捷方式/选项可以快速执行此操作?
如果我想将最近的三个提交修复为第四个最近的提交怎么办?
我能找到的唯一解决方案是编写一个脚本来为您执行此操作。但我正在寻找已经内置到 git 中的东西。
最佳答案
一种解决方案是使用 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'
关于git - git有没有快捷命令把HEAD固定成HEAD~1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51429029/