Git 在交互式变基中预先添加所有提交消息
Git prepend all commit messages in interactive rebase
我 运行 一个交互式变基直到提交 abcdef
。
git rebase -i abcdef
在编辑器中 - Vim 我将所有 pick hash
行更改为
reword hash PREFIX: Original commit message
使用此 vim 命令
%s/pick \(\w\{7}\)/reword PREFIX:/
但随后 git 继续提示我为每次提交编辑消息。有没有简单的方法来批处理这个过程?
GIT_EDITOR='sed -i "1s/^/PREFIX: /"' GIT_SEQUENCE_EDITOR=vim \
git rebase -i abcdef
或者您也可以
git -c core.editor='sed -i "1s/^/PREFIX: /"' \
-c sequence.editor=vim \
rebase -i abcdef
如果您不想使用环境覆盖。
如果你知道你要改写它们,你甚至可以 sed 序列,GIT_SEQUENCE_EDITOR='sed -i "s/^pick/reword/"'
。
仅使用 git
的备选答案:
git rebase -i --exec 'git commit --amend -m "PREFIX: $(git show -s --format=%s)"' origin/master
您也可以非交互式地执行此操作(没有 -i
标志)。之后在交互式 window 中,您可以在每次提交后删除 exec 指令,其中前缀 不应 被应用。
解释:
使用rebase --exec
你可以为每次提交执行一个命令,这非常有用。
使用git commit --amend -m <MESSAGE>
您可以更改当前提交的消息。
使用git show -s --format=%s
你可以显示当前的提交信息。
综合起来:
要给消息加前缀我们必须得到当前消息(3),并用修改(2)改变当前消息,即git commit --amend -m "PREFIX: $(git show -s --format=%s)"
。 双引号 很重要,以便命令在消息字符串中执行。
要对 rebase 中的每个提交执行此操作(基于此处的 origin/master
分支),您在每次提交时执行 (4),使用 单引号 否则每次提交都会得到你最后一次提交的消息,瞧,你会得到上面的命令。
我 运行 一个交互式变基直到提交 abcdef
。
git rebase -i abcdef
在编辑器中 - Vim 我将所有 pick hash
行更改为
reword hash PREFIX: Original commit message
使用此 vim 命令
%s/pick \(\w\{7}\)/reword PREFIX:/
但随后 git 继续提示我为每次提交编辑消息。有没有简单的方法来批处理这个过程?
GIT_EDITOR='sed -i "1s/^/PREFIX: /"' GIT_SEQUENCE_EDITOR=vim \
git rebase -i abcdef
或者您也可以
git -c core.editor='sed -i "1s/^/PREFIX: /"' \
-c sequence.editor=vim \
rebase -i abcdef
如果您不想使用环境覆盖。
如果你知道你要改写它们,你甚至可以 sed 序列,GIT_SEQUENCE_EDITOR='sed -i "s/^pick/reword/"'
。
仅使用 git
的备选答案:
git rebase -i --exec 'git commit --amend -m "PREFIX: $(git show -s --format=%s)"' origin/master
您也可以非交互式地执行此操作(没有 -i
标志)。之后在交互式 window 中,您可以在每次提交后删除 exec 指令,其中前缀 不应 被应用。
解释:
使用
rebase --exec
你可以为每次提交执行一个命令,这非常有用。使用
git commit --amend -m <MESSAGE>
您可以更改当前提交的消息。使用
git show -s --format=%s
你可以显示当前的提交信息。
综合起来:
要给消息加前缀我们必须得到当前消息(3),并用修改(2)改变当前消息,即
git commit --amend -m "PREFIX: $(git show -s --format=%s)"
。 双引号 很重要,以便命令在消息字符串中执行。要对 rebase 中的每个提交执行此操作(基于此处的
origin/master
分支),您在每次提交时执行 (4),使用 单引号 否则每次提交都会得到你最后一次提交的消息,瞧,你会得到上面的命令。