压缩提交一直到初始留下 2 次提交
squashing commits all the way to the initial leaves 2 commits
我正在学习 git 并尝试压缩。我想压缩 master 上的所有提交,只留下最初的提交。例如,我的提交历史如下所示:
2c825e339b60702b7b48c2ea022e473341d89a7d (HEAD -> master) another edit
f676a10db6a0cfe3cebb8f84aad971b481483181 second file
dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c initial
之后我运行git rebase -i dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c
网络上描述的通常方法是将每个 pick
替换为 squash
,但第一个。这样做之后,我看到了这个提交历史:
2067070140c38f8ecf5f70894e6267bfee614d85 (HEAD -> master) second file
dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c initial
为什么 squash
没有一直工作到初始提交?
此外,如果我再次运行相同的压缩命令,在交互式window中只有1个pick statement
。将其更改为 squash
会触发错误,而将其保留为 pick
则不会执行任何操作。我找到了
git reset --soft HEAD~1
git commit -m "1.0.0"
成为压缩 2 次提交的有效方法。我怎样才能使用 git rebase --squash
获得相同的结果?
您在 rebase 命令中指定的提交是您要修改或移动的第一个提交的 parent。这对于存储库的第一次提交很困难,因为它没有任何 parents。相反,您可以使用 --root
选项:
git rebase -i --root
这应该给你所有的提交。
你必须做 git reset --soft HEAD~2
然后做 git commit --amend -m 1.0.0
我正在学习 git 并尝试压缩。我想压缩 master 上的所有提交,只留下最初的提交。例如,我的提交历史如下所示:
2c825e339b60702b7b48c2ea022e473341d89a7d (HEAD -> master) another edit
f676a10db6a0cfe3cebb8f84aad971b481483181 second file
dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c initial
之后我运行git rebase -i dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c
网络上描述的通常方法是将每个 pick
替换为 squash
,但第一个。这样做之后,我看到了这个提交历史:
2067070140c38f8ecf5f70894e6267bfee614d85 (HEAD -> master) second file
dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c initial
为什么 squash
没有一直工作到初始提交?
此外,如果我再次运行相同的压缩命令,在交互式window中只有1个pick statement
。将其更改为 squash
会触发错误,而将其保留为 pick
则不会执行任何操作。我找到了
git reset --soft HEAD~1
git commit -m "1.0.0"
成为压缩 2 次提交的有效方法。我怎样才能使用 git rebase --squash
获得相同的结果?
您在 rebase 命令中指定的提交是您要修改或移动的第一个提交的 parent。这对于存储库的第一次提交很困难,因为它没有任何 parents。相反,您可以使用 --root
选项:
git rebase -i --root
这应该给你所有的提交。
你必须做 git reset --soft HEAD~2
然后做 git commit --amend -m 1.0.0