你有几个选择。
批量重写提交消息
你可以使用git filter branch来重写你的提交信息:
如果您需要将 Acked-by 行添加到最后 10 次提交(都不是合并),请使用以下命令:
git filter-branch --msg-filter '
cat &&
echo "Acked-by: Bugs Bunny <bunny@bugzilla.org>"
' HEAD~10..HEAD
手动编辑 30 条提交消息
您可以通过选择编辑模式git rebase interactive来重写您的提交消息
git rebase -i HEAD~30
edit f7f3f6d changed my name a bit
edit 310154e updated README formatting and added blame
edit a5f4a0d added cat-file
...
然后
git commit -v --amend
<editor launched, edit commit message>
git rebase --continue
git commit -v --amend
<editor launched, edit commit message>
git rebase --continue
git commit -v --amend
<editor launched, edit commit message>
git rebase --continue
....
将所有内容压缩为一次提交
您还可以使用 git rebase 将所有内容压缩到一个提交中,从而限制您的工作量
git rebase -i HEAD~30
pick f7f3f6d changed my name a bit
squash 310154e updated README formatting and added blame
squash a5f4a0d added cat-file
...
<editor launched, edit the combined commit message>
主动自动化
如果这是您可能需要定期执行的操作,您可以使用prepare commit mesg挂钩为您的提交消息的格式添加一些一致性。
请注意,与 git 不同,您不能跳过 svn 中的预提交钩子(至少不能通过任何内置机制),因此尝试执行类似的操作git commit -va --no-verify
将无效,因为下次运行时git svn dcommit
,它将失败所有相同(当然,如果有什么事情要失败的话)。