在GIT中是否有一个命令我可以用来压缩最后n次提交?

时间:2014-09-26 04:21:45

标签: git git-rebase

GIT中是否有一个命令我可以用来压缩最后n次提交?

截至目前,我如何做到这一点,调用命令

git rebase -i HEAD~n

然后为我要用s或壁球挤压的提交作为前缀,我很想知道是否有一个命令达到了同样的目的?

1 个答案:

答案 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 -)