git - git有没有快捷命令把HEAD固定成HEAD~1

标签 git rebase interactive git-rebase fixup

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

git rebase -i HEAD~2

这显示了两个提交,HEAD~1HEAD。我将 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/

相关文章:

javascript - 在 SVG 中包含 JavaScript

scripting - 在较大的应用程序中托管 .fsx 脚本

git - CMake 无法检测 Git 版本

git - 放置 ssl 证书的标准做法

git - git有没有办法推送reflog?

Git压缩分支中的所有提交而不会发生冲突

git merge request only feature 分支提交

windows - 如何将 Git 配置为信任来自 Windows 证书存储的证书?

推送被拒绝后 git rebase 修复

c++ - C++0x 的 REPL/LINQpad/F# 交互式替代方案?