我有30次提交,我想在所有邮件的开头添加“Bug XXXXXXX”,我可以在一个操作/命令中执行此操作吗?
我试图避免挤压它们。
谢谢!
答案 0 :(得分:16)
使用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”的提交数量
答案 1 :(得分:1)
最好不要依赖以下任何一种:
echo -n "Bug XXXXXXX: "
echo "Bug XXXXXXX: \c"
回声的行为取决于正在使用的回声版本。请参阅下面的链接stackoverflow问题:
'echo' without newline in a shell script
更好的解决方案可能是:
git filter-branch -f --msg-filter '
printf "%s" "Bug XXXXXXX: "
&& cat
' HEAD~<N>..HEAD