小编典典

使用 Git 压缩我最后的 X 提交

git

如何使用 Git 将我的最后一次 X 提交合并为一次提交?


阅读 343

收藏
2022-01-09

共2个答案

小编典典

使用git rebase -i <after-this-commit>“pick”并将其替换为“squash”或“fixup”,如手册所述

在此示例中,<after-this-commit>是 SHA1 哈希或来自当前分支的 HEAD 的相对位置,从该位置分析 rebase 命令的提交。例如,如果用户希望查看过去来自当前 HEAD 的 5 次提交,则命令为git rebase -i HEAD~5.

2022-01-09
小编典典

无需git rebase或即可轻松完成此操作git merge --squash。在这个例子中,我们将压缩最后 3 次提交。

如果你想从头开始编写新的提交消息,这就足够了:

git reset --soft HEAD~3 &&
git commit

如果你想用现有提交消息的串联开始编辑新的提交消息(即类似于 pick/squash/squash/…/squashgit rebase -i指令列表将开始你的内容),那么你需要提取这些消息并通过他们git commit

git reset --soft HEAD~3 && 
git commit --edit -m"$(git log --format=%B --reverse HEAD..HEAD@{1})"

这两种方法都以相同的方式将最后三个提交压缩为一个新提交。软重置只是将 HEAD 重新指向您不想压缩的最后一次提交。索引和工作树都不会被软重置触及,使索引处于新提交所需的状态(即它已经包含了您将要“丢弃”的提交的所有更改)。

2022-01-09