git - 我如何将我最后的 N 提交压缩在一起?

标签 git rebase squash git-squash

如何将我最后的 N 次提交 merge 为一次提交?

最佳答案

无需 git rebasegit merge --squash 即可相当轻松地完成此操作。在此示例中,我们将压缩最后 3 次提交。

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

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

如果你想开始编辑新的提交消息与现有提交消息的串联(即类似于 pick/squash/squash/…/squash git rebase -i 指令列表从你开始),然后你需要提取这些消息并将它们传递给 git commit:

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

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

关于git - 我如何将我最后的 N 提交压缩在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5189560/

相关文章:

Git rebase 尝试将更改应用到错误的文件

git - 如何使用压缩的提交进行 rebase

git - 压缩来自其他分支的提交是否安全

git - 在 squash rebase 之后,如何让 git 分支历史与 master 匹配?

java - Jenkins - 如何将覆盖率报告发布到 github

merge 期间的 Git pull 和 merge

GitHub 客户端 : Pull Request Button is missing

git - 在 sourcetree 上,如何在不同分支 checkout 后恢复 stash ?

version-control - Mercurial 功能工作 - 保持定制工作干净的最佳实践?

git - 如果多个人在一个功能分支上工作,但它被压缩并 merge 到主分支,那么 git 历史会发生什么?