Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

[GitHub] 行の変更履歴(blame)から対応する PR を探す

More than 1 year has passed since last update.

Tl;Dr

GitHub上の Blame からリンクをホバーすると対応する PR が見つかる。
image.png

たぶんこれが一番早いと思います。

その修正をした 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 キーを押すと、インクリメンタルなファイルの絞り込みが行える。
47CB0565-FF0C-4B3B-9AFF-CFF9566024DD.png

もちろん検索機能を活用してもよいし、ディレクトリツリーから探しても良いが、ファイル名が事前に分かっているのであれば個人的にはこれが一番早いように感じる。

Blame を表示する

ファイルを選択したら、右上に配置されている Blame ボタンから Blame を表示できる。
11C6090F-B4AF-499E-8154-B7A41070F03A.png

PR へのリンクを探す

Blame が表示されたら、冒頭のようにリンクにフォーカスすると対応する PR へのリンクが表示される。
C267E4AB-3003-46A0-862E-F8023FD62582.png

過去の Blame を表示する

これは Git にも備わっている機能だが、同じ行が複数のコミットに渡って修正されている場合、過去の Blame も表示することができる。

GitHub の Blame 画面でそれに該当する場合、行番号のルーラの左側にアイコンが表示され、そこをクリックすると過去の Blame が表示できる。
F3F5B1B0-F2A6-43B4-A933-999FF19BCB6C.png

この操作は再帰的に行え、最古のコミットまで辿ることができる。

終わりに

Git は非常に多機能であると言われ、実際にそうであり本当に使いこなすのには長い時間を要すると個人的には感じる。

しかし、GitHub も着実に進化しており、最近では『コードジャンプ機能』や『刷新された Notification 画面(beta)』など、かなりのタスクが GitHub 上だけで完結できるようになりつつあるとも感じる(もちろんすべてとは言わない)。

GitHub の機能も使いこなして快適な開発ライフを。

YusukeHosonuma
iOSテスト本とか書きました。Qiitaでなくブログに書くことも多いです。 📕 iOSアプリ開発自動テストの教科書 / iOSテスト全書 💻 iOS / Swift / Haskell / Go / Java / Ruby 🎤 https://speakerdeck.com/yusukehosonuma
http://blog.penginmura.tech/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away