GIT中是否有一个命令我可以用来压缩最后n次提交?
截至目前,我如何做到这一点,调用命令
git rebase -i HEAD~n
然后为我要用s或壁球挤压的提交作为前缀,我很想知道是否有一个命令达到了同样的目的?
答案 0 :(得分:5)
手动但有任意数量的提交选项的持续时间
git reset --soft HEAD~X
git commit
如果您事先知道要执行此操作,则可以随时键入
git commit --fixup HEAD
当你工作时,而不是git commit
。然后,如果您配置了rebase.autosquash,或者如果您传入--autosquash rebase将为您完成所有压缩。
如果你喜欢危险地生活,你可以创建一个像下面这样的别名来为你做壁球。基本上你用当前头的树手动调用commit-tree,并创建一个指向HEAD~X的提交,在那里你将X作为参数传递给一个名为squashx或其他东西的别名。以这种方式创建提交不会更新您的分支,因此您需要通过update-ref强制更新当前分支。此表单将从HEAD中回收提交消息。
git update-ref HEAD $(git log --format=%B -n 1 HEAD | git commit-tree -p HEAD~$1 HEAD^{tree} -F -)