特定のコミットが含まれているブランチを見つけるために、git にクエリを実行するにはどうすればよいでしょうか。 ブランチgitk
が多すぎる場合を除き、通常はブランチがリストされます。ブランチが多すぎる場合は、「多数 (38)」などと表示されます。完全なリスト、または少なくとも特定のブランチにコミットが含まれているかどうかを知る必要があります。
ベストアンサー1
git branch --contains <commit>
指定されたコミット (指定されていない場合は HEAD) を含むブランチのみを一覧表示します。 を意味します
--list
。
git branch -r --contains <commit>
リストリモートトラッキングブランチ同様に(ユーザー3941992の答え(以下参照)つまり「リモート ブランチと直接関係のあるローカル ブランチ」です。
として了解しましたによるカール・ウォルシュ、これはデフォルトのrefspec
fetch = +refs/heads/*:refs/remotes/origin/*
他のref名前空間を含める必要がある場合(プルリクエスト、ゲリット、...)、新しい refspec を追加して再度フェッチする必要があります。
git config --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"
git fetch
git branch -r --contains <commit>
こちらもご覧ください準備完了記事。
タグ
--contains
は、特定のコミットがブランチにすでに取り込まれているかどうかを判断します。適用したと思っていたパッチからコミット SHA を取得した場合や、メモリ使用量を 75% 削減するお気に入りのオープン ソース プロジェクトのコミットがすでに取り込まれているかどうかを確認したい場合などです。
$ git log -1 tests
commit d590f2ac0635ec0053c4a7377bd929943d475297
Author: Nick Quaranto <[email protected]>
Date: Wed Apr 1 20:38:59 2009 -0400
Green all around, finally.
$ git branch --contains d590f2
tests
* master
注意:コミットがリモートトラッキングブランチ、-a
オプションを追加します。
(ミシェルBコメント下に)
git branch -a --contains <commit>
マトリックスフロッグ正確にどのブランチにそのコミットが含まれているかだけを表示するとコメントしています。
どのブランチに「同等の」コミットが含まれているか(つまり、どのブランチがそのコミットをチェリーピックしたか)を知りたい場合は、git cherry
:
git cherry
はコミット ID (sha1) ではなく変更セットを比較するため、ローカルで行ったコミットが別のコミット ID でgit cherry
適用されているかどうかを確認するために使用できます。たとえば、コミットを直接プッシュまたはプルするのではなく、電子メールでパッチを送信する場合にこれが起こります。<upstream>
<upstream>
__*__*__*__*__> <upstream>
/
fork-point
\__+__+__-__+__+__-__+__> <head>
(ここで、「 」とマークされたコミット-
は には表示されませんgit cherry
。つまり、それらは にすでに存在しているということです<upstream>
。)