我有 30 次提交,我想在所有消息的开头添加“Bug XXXXXXX”,我可以在单个操作/命令中执行此操作吗?
我试图避免挤压它们。
使用git rebase -i HEAD~<N>
其中 N 是要返回的提交数,并-i
使其具有交互性,即它将在 vim 或任何您的默认编辑器中打开。参见Scott Chacon 的书。然后您可以更改提交消息。
如果您需要它自动化,那么您可能需要尝试filter-branch:
如果您需要以某种可编写脚本的方式重写大量提交,则可以使用另一个历史重写选项
在这种情况下,您将使用:
git filter-branch --msg-filter <command>
这是手册中给出的将“Acked-by”附加到一系列提交的示例。您可以将其更改为“BUG XXXXXXX”
git filter-branch -f --msg-filter '
echo "Bug XXXXXXX: \c"
&& cat
' HEAD~<N>..HEAD
其中 N 是返回并附加“BUG XXXXXXX”的提交次数
最好不要依赖以下任何一种:
echo -n "Bug XXXXXXX: "
echo "Bug XXXXXXX: \c"
echo 的行为取决于正在使用的 echo 版本。请参阅下面链接的 stackoverflow 问题:
更好的解决方案可能是:
git filter-branch -f --msg-filter '
printf "%s" "Bug XXXXXXX: "
&& cat
' HEAD~<N>..HEAD