2013-09-30 68 views

回答

9

您可以尝试使用prepare-commit-msg钩子。第二个参数将是merge“如果提交是合并或.git/MERGE_MSG文件存在”。非零退出状态将中止提交。

我不认为这将适用于快进合并,因为不会有提交消息。

上挂钩更多信息:https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_prepare_commit_msg

+1

这似乎并没有被触发,当你做一个混帐合并。要看到这一点:将'exit 1'放在prepare-commit-msg的顶部并执行合并提交。 –

+0

它是一个快速合并?如果合并不触发提交消息,它将无济于事。 – Kousha

+2

即使对于提交(消息)的实际合并,也不会触发。我已经尝试过上述测试...非常高兴被示例错误证明,但请给这个测试。 –

0

另外一个不错的解决办法是增加一个shell脚本,调用它像你想, 然后将这些行添加到该脚本:

git() { 
    if [ "$1" == "merge" ]; then 
     echo "seems to work like a charme" 
    fi 
    command git "[email protected]" 
} 

git "[email protected]" 

然后再做一个

alias git="./my-pre-merge-script.sh" 

然后你很好去。你刚刚添加了你自己的预合并钩子。 我知道,你不能访问任何参数git会传递给一个真正的预合并钩子,但你可以准备文件或任何你想为合并准备现在;我个人对这种方法感到非常满意:我花了整整2-3天的时间来寻找合并前的东西,然后我必须使用pre-commit-msg,但是我没有找到足够满足需求的准确信息。这解决了我所有的问题。希望这有助于未来的任何人。