web-dev-qa-db-ja.com

Gitでマージ前フックを作成するにはどうすればよいですか?

質問はそれをすべて言います。マージの前にアクションを実行する方法はありますか? pre-commitフックを使用する方法があると推測していますが、よくわかりません。

40
joshin4colours

prepare-commit-msgフックを使用してみてください。 2番目の引数はmerge "コミットがマージである場合、または.git/MERGE_MSGファイルが存在する場合"になります。ゼロ以外の終了ステータスは、コミットを中止します。

コミットメッセージがないので、これは早送りマージでは機能しないと思います。

フックの詳細: https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_prepare_commit_msg

21
Kousha

別の素敵な回避策は、シェルスクリプトを追加し、必要に応じて呼び出してから、次の行をスクリプトに追加することです。

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

git "$@"

それから

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

その後、あなたは行ってもいいです。独自のマージ前フックを追加しました。 gitが実際のマージ前フックに渡す引数にはアクセスできないことは知っていますが、ファイルやマージの準備をするものはすぐに準備できます。私はこのアプローチに個人的に非常に満足しています:マージ前に何かを見つけるために2つか3日間を費やし、それからpre-commit-msgに行かなければなりませんでした。これは私のすべての問題を解決します。これが将来誰にも役立つことを願っています。

2
ElectRocnic