我正在学习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
来达到相同的结果?
答案 0 :(得分:1)
您在rebase命令中指定的提交是您要修改或移动的第一个提交的 parent 。对于第一次提交存储库来说,这很困难,因为它没有任何父母。相反,您可以使用--root
选项:
git rebase -i --root
这应该给您所有提交。
答案 1 :(得分:1)
您必须先做git reset --soft HEAD~2
,然后再做git commit --amend -m 1.0.0