在正常的变基冲突后调用git rebase --continue
时,编辑器(GIT_EDITOR
)会打开并要求修改提交消息。由于提交消息可能包含前导符号 # ,所以这可能会失败。
$ export GIT_EDITOR=true
$ git rebase --continue
Aborting commit due to empty commit message.
error: could not commit staged changes.
在Git rebase文档中,有如下段落:
所以我尝试切换到应用后端,但它仍然失败了:修改提交信息 当在变基过程中出现冲突时,变基会停止并要求用户解决。由于用户可能需要在解决冲突时进行重大更改,因此在冲突解决之后,用户运行git rebase --continue后,变基应该打开一个编辑器并要求用户更新提交信息。合并后端就是这样做的,而应用后端则盲目地应用原始提交信息。
$ export GIT_EDITOR=true
$ git config rebase.backend apply
$ $ git config --list | grep backend
rebase.backend=apply
$ git rebase --continue
Aborting commit due to empty commit message.
error: could not commit staged changes.
如何强制Git盲目应用提交消息?
#
,那么你可能需要选择另一个字符来作为注释。但是我认为这仍然是一种有风险的做法。请参考这个问题。core.commentChar=auto
可能会对你有所帮助。 - Joachim Sauergit rebase --continue
将继续使用该特定的后端。然而,GIT_EDITOR=true
技巧应该有效,我不确定为什么没有起作用。 - torekgit -c core.commentChar=auto rebase <commit> <branch>
也有同样的问题。git -c rebase.backend=apply rebase <commit> <branch>
可以解决问题,但我想知道它是否会产生一些负面影响。毕竟 Git 默认使用合并而不是应用,肯定有其原因。 - Thomas S.