こんにちは、さるまりんです。
gitで開発中、masterとdevelopmentブランチがそれぞれこんな感じだったとします。
--A--B---C--D--E--F master \ / G--H--I--J development
ここでdevelopmentブランチ上のコミットHがmasterに取り込まれたのはいつかを調べてみます。
図を見ると明らかなのですがI→Eのマージコミットを特定します。
git log
などでコミットHのSHA-1の値を取得します。
そのSHA-1の値を用いてコマンドをそれぞれ実行して共通する最後の行が取得したいマージコミットのSHA-1の値です。
git rev-list [特定したいコミットのSHA-1]..master --ancestry-path
git rev-list [特定したいコミットのSHA-1]..master --first-parent
git rev-list
ではコミットを時系列逆順に一覧表示します。
上記のコマンドはA..BでAからBの範囲を指定し、
--ancestry-path
でBとその祖先でAの子孫のコミットを、
--first-parent
でそれぞれの最初の親コミットのみ(他の親、祖先を無視)を
それぞれ表示させます。
それぞれをファイルに書き出し、一致する最終行をgrep
で取得するとマージコミットのSHA-1の値を取得することができます。
git rev-list [特定したいコミットのSHA-1]..master --ancestry-path > FILE1
git rev-list [特定したいコミットのSHA-1]..master --first-parent > FILE2
grep -x -i -f FILE1 FILE2
上で表示されるのはマージコミットのSHA-1の値です。
やりたい事は「いつマージされたか?」でしたね。
SHA-1がわかったので
git show [SHA-1]
で、そのコミットの情報を見ることができます。
gitは本当にいろんなことできますね。
もっと便利に利用していきたいと思います。
読んでくださってありがとうございました。
それではまた!