git mergeでコンフリクトが発生するか前もって調べる方法 - Qiita
直前のbranchを現在のbranchにマージできるかチェックする
git format-patch `git rev-parse --abbrev-ref HEAD`..`git rev-parse --abbrev-ref @{-1}` --stdout | git apply --check
流れ
- 直前のbranchを現在のbranchにマージするパッチを用意する。
- 標準出力で出された結果をパイプでつなげてgit apply --checkでコンフリクトなしでmergeできるかどうかを確認する。
なんだけど、なんだかよくわからないコマンドがいっぱい出てきたよ。
rev-parse
あるブランチがいったいどの SHA を指しているのか、あるいはその他の例の内容が結局のところどの SHA に行き着くのかといったことを知るには、Git の調査用ツールである rev-parse を使います。こういった調査用ツールのより詳しい情報は第 9 章で説明します。rev-parse は低レベルでの操作用のコマンドであり、日々の操作で使うためのものではありません。しかし、今実際に何が起こっているのかを知る必要があるときなどには便利です。
なるほど。わからん。
現在のブランチを知る。
git rev-parse --abbrev-ref HEAD
git-rev-parseのabbrev-refオプションにはこのように書いてある。
--abbrev-ref[={strict|loose}] A non-ambiguous short name of the objects name.
上のやつだと、HEADファイルからこねこねして現在のブランチ名をとってます。
参考:oh-my-zshのcurrent_branch関数
function current_branch() { ref=$(git symbolic-ref HEAD 2> /dev/null) || \ ref=$(git rev-parse --short HEAD 2> /dev/null) || return echo ${ref#refs/heads/} }
最終形
$ git format-patch `git rev-parse --abbrev-ref HEAD`..master --stdout | git apply --check
現在のブランチがmasterにmergeできるかどうかを確認する。