首页 > 解决方案 > 一直压缩提交到最初的叶子 2 次提交

问题描述

我正在学习 git 并尝试挤压。我想压缩主人的所有提交,只留下最初的提交。例如,我的提交历史如下所示:

2c825e339b60702b7b48c2ea022e473341d89a7d (HEAD -> master) another edit
f676a10db6a0cfe3cebb8f84aad971b481483181 second file
dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c initial

之后我跑了git rebase -i dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c

网络上描述的通常方法是将 every 替换picksquash,但第一个。之后,我会看到这个提交历史:

2067070140c38f8ecf5f70894e6267bfee614d85 (HEAD -> master) second file dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c initial

为什么squash一直到初始提交都没有工作?

pick statement此外,如果我再次运行相同的 squash 命令,交互窗口中只有 1 个。将其更改为squash触发错误并使其pick不执行任何操作。我已经找到

git reset --soft HEAD~1
git commit -m "1.0.0"

成为仅压缩 2 次提交的有效方法。我究竟如何使用git rebase --squash来达到相同的结果?

标签: gitgit-squash

解决方案


您在 rebase 命令中指定的提交是您要修改或移动的第一个提交的父级。这对于存储库的第一次提交来说很困难,因为它没有任何父级。相反,您可以使用以下--root选项:

git rebase -i --root

这应该给你所有的提交。


推荐阅读