我有30个提交,我想在所有消息的开头添加“Bug XXXXXXX”,我可以用一次操作/命令完成吗?
我试图避免压缩它们。
我有30个提交,我想在所有消息的开头添加“Bug XXXXXXX”,我可以用一次操作/命令完成吗?
我试图避免压缩它们。
使用git rebase -i HEAD~<N>
,其中N是要回溯的提交数,-i
将使其变得交互式,即它将在vim中打开或者在您的默认编辑器中打开。请参阅Scott Chacon's Book。然后您可以更改提交消息。
如果您需要自动化处理,则可能需要尝试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 XXXX: " && cat
来避免末尾的换行符。这样可以吗? - Mike Seplowitz最好不要依赖以下任何一种:
echo -n "Bug XXXXXXX: "
echo "Bug XXXXXXX: \c"
echo命令的行为取决于使用的版本。请参见下面链接的stackoverflow问题:
更好的解决方案可能是:
git filter-branch -f --msg-filter '
printf "%s" "Bug XXXXXXX: "
&& cat
' HEAD~<N>..HEAD