質問はそれをすべて言います。マージの前にアクションを実行する方法はありますか? pre-commit
フックを使用する方法があると推測していますが、よくわかりません。
prepare-commit-msg
フックを使用してみてください。 2番目の引数はmerge
"コミットがマージである場合、または.git/MERGE_MSG
ファイルが存在する場合"になります。ゼロ以外の終了ステータスは、コミットを中止します。
コミットメッセージがないので、これは早送りマージでは機能しないと思います。
フックの詳細: https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_prepare_commit_msg
別の素敵な回避策は、シェルスクリプトを追加し、必要に応じて呼び出してから、次の行をスクリプトに追加することです。
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に行かなければなりませんでした。これは私のすべての問題を解決します。これが将来誰にも役立つことを願っています。