2013-09-30 107 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,但是我沒有找到足夠滿足需求的準確信息。這解決了我所有的問題。希望這有助於未來的任何人。