コミットが最初に作成されたGithubでプルリクエストを見つける


171

プルリクエストは、リポジトリに加えられた変更または一連の変更に関するより大きな考え方を理解するのに最適です。プルリクエストの読み取りは、ソースへの小さなアトミックな変更の代わりに、論理的な変更の大きなグループを取得するので、プロジェクトをすばやく「グロク」する優れた方法です。コードの行を関連する「スタンザ」に編成して読みやすくするのと同じです。

私はファイルまたはコミットを見ていることに気づき、最初にそれを作成したプルリクエストへのコミットをバックトラックする方法があるかどうか疑問に思います。そのプルリクエストは最終的にマージされますが、マージコミットでは必要ありません。


1
+1これは、プロジェクトをforkして古い作業ブランチを抱えていて、PRを行ったかどうか覚えていない場合にも役立ちます。
Steve Clay

回答:


225

githubに移動して検索バーにSHAを入力するだけです。左側の[Issues]リンクを選択してください。

2017年7月13日更新

Github UIを介して、これを実行する非常に簡単な方法があります。UIのブランチにあるコミットのリストでコミットを見ている場合は、コミット自体へのリンクをクリックします。そのコミットのPRがあり、それがブランチに直接追加されていない場合、PR番号をリストするPRへのリンクと、ブランチが入ったブランチは、ページ上部のコミットメッセージのすぐ下にあります。 ここに画像の説明を入力してください


コミットへのリンクをクリックしてPRを見つける例

コミットSHAだけがあり、それについて何も/commit/[commit SHA]調べたくない場合は、リポジトリのURLに追加するだけで、コミットページが表示され、PRリンクが存在する場合はそれが表示されます。たとえば、SHAが52797a7a3b087231e4e391e11ea861569205aaf4で、リポがhttps://github.com/glimmerjs/glimmer-vmの場合、https://github.com/glimmerjs/glimmer-vm/commit/52797a7a3b087231e4e391e11ea41569205aaf1569205205に移動します。


これをのような短いSHAで動作させることはできませんがe4077951、これはまだ動作しますか?
Matt Sanders

@RustyTomsこれは機能しますが、あなたが言ったようにコミットハッシュを検索すると、[ github.com/wso2/carbon-kernel/…は、2つのプルリクエストで同じコミットをマスターにマージしました。このようなシナリオでは、関連するコミットをマージしたプルリクエストとして何を選択する必要があるか
Kasun Siyambalapitiya 2017年

@RustyToms APIを使用してこれをどのように達成できるか
Kasun Siyambalapitiya 2017年

1
@marathonこれを行うにはさらに簡単な方法があります。答えを更新します
RustyToms

1
PRへの言及がない場合、PRがないと結論付けることができますか?つまり、コミットはブランチ(通常はmaster)で直接行われましたか?
エリック

53
git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/*
git fetch origin
git describe --all  --contains <COMMIT>

必要に応じoriginて、プルリクエストの送信先のgithubリポジトリを指すリモートの名前に変更します。最初のコマンドは特定のリモートに対して1回だけ実行する必要があり、2番目のコマンドは通常、他の更新を取得するときに実行されます。

これにより、gitは実際のブランチとともにプルリクエストに関する情報を取得します。それらはのようなリモート追跡ブランチとして表示されますorigin/pull/123。それが完了したらgit describe--allおよび--contains オプションを使用して、参照されたコミットがある最初のブランチを表示できます。

ただし、探しているコミットが実際にプルリクエストからのコミットの変更されたバージョンである場合、たとえば、変更が他の作業に基づいている場合や、マージを行っている人が変更を行うことを決定した場合、これは機能しません。


これにより、拒否されたPRのすべてのコミットがダウンロードされると思います。pull/*/headBLOBなしでフェッチにコミットのリストを取得させる方法はありませんか?この後、どのように「クリーンアップ」しますか(オリジンを再構成します)?
Steve Clay

1
これは知っておくと便利です。GitHubがこれらを実際のGitオブジェクトとして追跡することを私は知りませんでしたが、それは完全に理にかなっています。ところで、configコマンドで「origin」ではなく「upstream」を使用するつもりでしたか?
Tobias J

1
@TobyJの使用upstreamは確かに誤りでした。私は、リモートに名前が付けられた構成を持つリポジトリからそれをコピーしましたが、リモートの名前としてupstreamより一般的なものを使用するように変更すると、その発生を逃しましたorigin。私はそれを修正するために答えを編集しました。
qqx 2014年

ありがとう!しかし、これはとても複雑です。Web UIにプル要求を含むリンクへのリンクがあればよいのですが。
ダニエルダラボス2014年

fwiwのrefs/remotes/origin/pr/*代わりに使用してみることもできますrefs/remotes/origin/pull/*
elaichi

21

2014年10月13日以降、これは簡単なはずです。

例えば:

ファイルを見るとわかるようにhakimel/reveal.js/plugin/markdown/markdown.js私の投稿には、元のPR#734への参照が含まれています。

contribからのPR

これは、コミットからのマージされたプルリクエストリンクすることから来ています

私たちはしてきたコミットのページに含むブランチやタグを含む変更の周りにあなたに多くのコンテキストを与えます。これで、リポジトリのデフォルトブランチでのコミットには、それらを導入したプルリクエストも表示されます。

その中にPRリファレンスを付けてコミットしてください!

プルリクエストでは、コミットが導入された理由に関する議論を確認し、変更の理由をより明確に把握できます。

いつものように、コミットSHAがわかっている場合は、コミットページをスキップして、プルリクエストを直接検索できます。


あなたが言ったようなコミットハッシュを検索したとき、[ github.com/wso2/carbon-kernel/…それは私に2つのプルリクエストを提供し、両方ともマスターへの同じコミットをマージしました。このようなシナリオでは、関連するコミットをマージしたプルリクエストとして何を選択する必要があるか
Kasun Siyambalapitiya 2017年

@KasunSiyambalapitiyaわからない:そのために新しい質問をすることができます。私は最新のもので行きます。
VonC 2017年

2
これをAPIレベルで取得できますか?
Kasun Siyambalapitiya 2017年

@KasunSiyambalapitiyaいい質問です。知りません。developer.github.com/v3/repos/commits/#get-a-single-commit
VonC

@esp興味深い。PRのリストは表示されますが、SHA1コミットが統合をマークしていません。
VonC 2017年


3

私はこれと同じ問題を抱えており、ここに文書化されているpr_for_sha bashヘルパーを書きました:

http://joey.aghion.com/find-the-github-pull-request-for-a-commit/

次のように呼び出すとpr_for_sha <COMMIT>、対応するgithubプルリクエストページがブラウザで開きます。


2
このソリューションでは、コミット後の最も近いマージがコミットを含むマージであることを前提としていますが、常にそうであるとは限りません。
Jason Denney、

@JasonDenneyフォローしているということは、特定のブランチまたは時間内にあるということですか?
LeZuse 2017

ええと、これは少し前のことでしたが、間に合ったと思います。月曜日にブランチAでコミット「X」を行い、火曜日にブランチBでコミットしてブランチBをマスターにマージし、水曜日にブランチAをマスターにマージするとします。PRコミット "X"が含まれているマスターブランチでこのスクリプトを使用して検索した場合、ブランチBが誤って通知されていると思います。
Jason Denney 2017年

git logコマンドを機能させることができません。git log --merges --ancestry-path --oneline 66100ab0..master- fatal: ambiguous argument '66100ab0..master': unknown revision or path not in the working tree.-git version 2.25.0
ジャンフランコP.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.