Tl;Dr
GitHub上の Blame からリンクをホバーすると対応する PR が見つかる。
たぶんこれが一番早いと思います。
その修正をした PR を探したい
現代において、GitHub などのホスティングサービスによる『Pull Request』を利用した開発は非常に一般的になっている。
Git では標準でgit blame
と呼ばれる、あるファイルの特定の行を修正した『コミット』を特定する仕組みが備わっており、その特定した『コミット』のメッセージや修正内容を確認することで、どういった意図で修正されたのか分かる。
$ git blame bin/deploy-firebase.sh
1c4cc183 (Yusuke Hosonuma 2018-12-08 02:50:47 +0900 1) #!/bin/bash -xe
1c4cc183 (Yusuke Hosonuma 2018-12-08 02:50:47 +0900 2)
1c4cc183 (Yusuke Hosonuma 2018-12-08 02:50:47 +0900 3) cd `dirname $0`
…
左端に表示されている1c4cc183
というのがコミットSHA(の短縮形)で、 git show
コマンドを利用すればそのコミットの詳細な内容を確認できる。
$ git show 1c4cc183
commit 1c4cc1837fe653e9101d0a9cf19068d747fe27e8
Author: Yusuke Hosonuma <tobi462@gmail.com>
Date: Sat Dec 8 02:50:47 2018 +0900
add: deploy script for firebase
diff --git a/bin/deploy-firebase.sh b/bin/deploy-firebase.sh
new file mode 100755
index 0000000..eaa1a7a
--- /dev/null
+++ b/bin/deploy-firebase.sh
@@ -0,0 +1,34 @@
+#!/bin/bash -xe
+
+cd `dirname $0`
…
しかし、前述したように『Pull Request』による開発が一般化したことで、修正の単位としてはむしろ『コミット』よりも『Pull Request』の方が分かりやすくなっていることが多い。また、PR でのディスカッションによる『意思決定』を確認したいことも非常に多い。
GitHub 上で対応する PR を探す
ローカルのgit log
から対応するPRを探す方法もあるし、スクリプト一発で特定する方法もすでにナレッジとして記事化されていたと思う。
しかし、そうした手間を掛けずとも GitHub の blame 機能から探すこともできる。
ファイルを絞り込む
該当リポジトリの画面でキーボードの T キーを押すと、インクリメンタルなファイルの絞り込みが行える。
もちろん検索機能を活用してもよいし、ディレクトリツリーから探しても良いが、ファイル名が事前に分かっているのであれば個人的にはこれが一番早いように感じる。
Blame を表示する
ファイルを選択したら、右上に配置されている Blame ボタンから Blame を表示できる。
PR へのリンクを探す
Blame が表示されたら、冒頭のようにリンクにフォーカスすると対応する PR へのリンクが表示される。
過去の Blame を表示する
これは Git にも備わっている機能だが、同じ行が複数のコミットに渡って修正されている場合、過去の Blame も表示することができる。
GitHub の Blame 画面でそれに該当する場合、行番号のルーラの左側にアイコンが表示され、そこをクリックすると過去の Blame が表示できる。
この操作は再帰的に行え、最古のコミットまで辿ることができる。
終わりに
Git は非常に多機能であると言われ、実際にそうであり本当に使いこなすのには長い時間を要すると個人的には感じる。
しかし、GitHub も着実に進化しており、最近では『コードジャンプ機能』や『刷新された Notification 画面(beta)』など、かなりのタスクが GitHub 上だけで完結できるようになりつつあるとも感じる(もちろんすべてとは言わない)。
GitHub の機能も使いこなして快適な開発ライフを。