挤压一直到最初的叶子2次提交

时间:2019-05-21 20:43:09

标签: git git-squash

我正在学习git并尝试挤压。我想将所有提交压缩在主服务器上,而只保留最初的提交。例如,我的提交历史记录如下:

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

此后,我运行了git rebase -i dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c

整个网上描述的通常方法是用pick替换每个squash,但第一个替换。完成之后,我将看到以下提交历史记录:

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

squash在最初提交时一直没有起作用吗?

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

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

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

2 个答案:

答案 0 :(得分:1)

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

git rebase -i --root

这应该给您所有提交。

答案 1 :(得分:1)

您必须先做git reset --soft HEAD~2,然后再做git commit --amend -m 1.0.0