19

我有 30 次提交,我想在所有消息的开头添加“Bug XXXXXXX”,我可以在单个操作/命令中执行此操作吗?

我试图避免挤压它们。

4

2 回答 2

33

使用git rebase -i HEAD~<N>其中 N 是要返回的提交数,并-i使其具有交互性,即它将在 vim 或任何您的默认编辑器中打开。参见Scott Chacon 的书。然后您可以更改提交消息。

如果您需要它自动化,那么您可能需要尝试filter-branch

如果您需要以某种可编写脚本的方式重写大量提交,则可以使用另一个历史重写选项

在这种情况下,您将使用:

git filter-branch --msg-filter <command>

man git-filter-branch

这是手册中给出的将“Acked-by”附加到一系列提交的示例。您可以将其更改为“BUG XXXXXXX”

git filter-branch -f --msg-filter '
    echo "Bug XXXXXXX: \c"
    && cat
    ' HEAD~<N>..HEAD

其中 N 是返回并附加“BUG XXXXXXX”的提交次数

于 2013-01-07T18:05:17.907 回答
2

最好不要依赖以下任何一种:

echo -n "Bug XXXXXXX: "

echo "Bug XXXXXXX: \c"

echo 的行为取决于正在使用的 echo 版本。请参阅下面链接的 stackoverflow 问题:

'echo' 在 shell 脚本中没有换行符

更好的解决方案可能是:

git filter-branch -f --msg-filter '
    printf "%s" "Bug XXXXXXX: "
    && cat
    ' HEAD~<N>..HEAD
于 2017-04-26T13:23:39.203 回答