[使用git merge --squash
时,将使用完整git log
的合并提交来预填充提交消息;使用git rebase -i
压缩提交时,提交消息中包含的信息不多。
重新定基时是否可能获得相同的预填充提交消息?
代替在squash
界面中使用git rebase -i
运算符,我们可以使用exec git merge --squash
获得预期的效果。例如,代替
pick 31988313 master
pick 42983473 first commit of squash
squash 231adf41 second commit of squash
...
squash e32b1fa4 last commit of squash
pick 1ad9e130 more commits
我们可以使用
pick 31988313 master
drop 42983473 first commit of squash
drop 231adf41 second commit of squash
...
drop e32b1fa4 last commit of squash
exec git merge --squash e32b1fa4
pick 1ad9e130 more commits
缺点是必须格外小心,以免意外删除过多的提交。