git-commit - Git Squash 并删除以前的提交

标签 git-commit git git-squash

也许我误解了 GIT 的工作原理。

我已经运行 git rebase -i HEAD~10 并且我可以将 10 个提交压缩为一个。问题是所有压缩的提交仍然存在,我认为它们将在将它们全部 merge 为一个后被删除。

这是预期的结果吗?如果是这样,我是否可以重写历史记录以删除无用的提交(因为这些更改已经在所有以前的提交都被压缩的提交中)?

最佳答案

当您开始交互式 rebase session 时,系统应该会提示您提供当前分支的最后 10 次提交的列表:

git rebase -i HEAD~10

pick as2i8dw first commit
pick ee361eb second  commit
...
pick b2762sx most recent commit

您需要将此文件更改为以下内容:

pick as2i8dw first commit
squash ee361eb second commit
...
squash b2762sx most recent commit

然后您需要执行git commit 来保存更改。现在,在执行 git log 时,您应该只会看到 as2i8dw 提交,而不会看到其他十个提交。

话虽这么说,这是你做的吗?

关于git-commit - Git Squash 并删除以前的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31636098/

相关文章:

git - 如何更改过去的提交以包含丢失的文件?

git 状态(没有提交,工作目录干净),但是已提交更改

git - 如何用更少的内容在单独的缓冲区中显示长 git 输出?

git - `git clean` 默认删除被忽略的文件?

Git squash 在分支中间提交

git - 仍然比较 Squash merge 后的 promise 差异

git - 如何删除git中的第一个提交?

git - 我如何信任 Git merge ?

Git 与 --squash merge ,同时保留每次提交的日志

git - 首次提交到 git 存储库时遇到问题