git 拉取时发生递归合并时不触发 commit-msg 挂钩

git commit-msg hook not triggering when recursive merge occurs on pull

我们正在使用 gerrit CI,它需要一个 commit-msg 挂钩,它会为每个提交消息添加一个 Change-ID。

然而,有时在拉取时我们会得到一个递归合并,这在 reflog 中显示如下:

767deb5 HEAD@{0}: pull: Merge made by the 'recursive' strategy.

发生这种情况时,我们无法推送到我们的 gerrit 服务器,并收到以下消息:

 ! [remote rejected] HEAD -> refs/for/master ([767deb5] missing Change-Id in commit message footer)

通过修改最后一次提交很容易解决。但这很乏味,令人沮丧。

如何避免这个问题?为什么递归合并策略不触发 commit-msg 钩子?怎么让它自动触发钩子?

这个问题与递归合并策略无关(我认为这只是一个巧合)。如果您想了解有关递归合并策略的更多信息,请查看 this very good text about it.

问题的发生是因为 Git commit-msg 没有为合并提交执行挂钩 没有冲突 。您会在以下位置找到一个非常好的解决方法: