どのブランチに特定のコミットが含まれているのかを調べるためにgitにクエリを実行するには gitk
ブランチが多すぎる場合を除いて、通常はブランチが一覧表示されます。その場合は、「many(38)」などのように表示されます。完全なリスト、または少なくとも特定のブランチにコミットが含まれているかどうかを知る必要があります。
どのブランチに特定のコミットが含まれているのかを調べるためにgitにクエリを実行するには gitk
ブランチが多すぎる場合を除いて、通常はブランチが一覧表示されます。その場合は、「many(38)」などのように表示されます。完全なリスト、または少なくとも特定のブランチにコミットが含まれているかどうかを知る必要があります。
回答:
git branch --contains <commit>
指定されたコミット(指定されていない場合はHEAD)を含むブランチのみをリストします。意味し
--list
ます。
git branch -r --contains <commit>
「リモートブランチと直接的な関係を持つローカルブランチ」であるリモートトラッキングブランチも(user3941992の以下の回答で述べたように)リストします。
このgit readyの記事も参照してください。
この
--contains
タグは、特定のコミットがブランチにまだ導入されているかどうかを判断します。おそらく、適用したと思われるパッチからのコミットSHAを持っているか、メモリ使用量を75%削減するお気に入りのオープンソースプロジェクトのコミットがまだあるかどうかを確認したいだけです。
$ git log -1 tests
commit d590f2ac0635ec0053c4a7377bd929943d475297
Author: Nick Quaranto <nick@quaran.to>
Date: Wed Apr 1 20:38:59 2009 -0400
Green all around, finally.
$ git branch --contains d590f2
tests
* master
注:コミットがリモート追跡ブランチ上にある場合は、-a
オプションを追加します。
(MichielBが以下にコメントするように)
git branch -a --contains <commit>
MatrixFrogは、どのブランチがその正確なコミットを含むかを示すだけであるとコメントしています。
「同等の」コミットが含まれているブランチ(つまり、どのブランチがそのコミットを選択したか)を知りたい場合は、次のようになりますgit cherry
。
git cherry
はコミットID(sha1)ではなくチェンジセットを比較するため、を使用git cherry
して、ローカルで行ったコミットが<upstream>
別のコミットIDで適用されているかどうかを確認できます。
たとえば、<upstream>
コミットを直接プッシュまたはプルするのではなく、電子メールでパッチをフィードしている場合に、これが発生します。
__*__*__*__*__> <upstream>
/
fork-point
\__+__+__-__+__+__-__+__> <head>
(ここでは、「-
」とマークされたコミットはに表示されません。git cherry
つまり、それらはすでにに存在してい<upstream>
ます。)
tests
そしてmaster
- master
それゆえ、アスタリスク現在のブランチです。
git cherry
:「gitの桜がチェンジではなく、コミットID(SHA1)を比較しているので、あなたが見つけるためにgitの桜を使用することができますローカルで行ったコミットが別のコミットIDで<upstream>に適用されている場合。たとえば、コミットを直接プッシュまたはプルするのではなく、メールで<upstream>にパッチをフィードしている場合に発生します。」kernel.org/pub/software/scm/git/docs/git-cherry.html
-a
リモートブランチもチェックするパラメータを追加します。
git cherry
@UpAndAdamがここで質問をした部分について:stackoverflow.com/questions/16304574/…、悲しいかな、質問は(まだ)回答されていません。
あなたは走ることができます:
git log <SHA1>..HEAD --ancestry-path --merges
出力の最後のコミットのコメントから、元のブランチ名を見つけることができます
例:
c---e---g--- feature
/ \
-a---b---d---f---h---j--- master
git log e..master --ancestry-path --merges
commit h
Merge: g f
Author: Eugen Konkov <>
Date: Sat Oct 1 00:54:18 2016 +0300
Merge branch 'feature' into master
git log <SHA1>..master --ancestry-path --merges --oneline | tail -n1
はこれを1行で取得していました
git log <SHA1>..master --ancestry-path --merges --oneline -1
A..B
コミット範囲を実行することはできません。次のような範囲は使用しないでください:: git log HEAD --oneline -1
> 82c12a9 (HEAD, origin/remote-branch-name, origin/master, origin/dev, origin/HEAD, master, dev) commit message
。
master
は、このリストにある場合は常にそれが優先されると簡単に言うことができます。そこからはあまり明確ではありません。.gitmodulesファイルからgitブランチを読み取ってみてくださいgit config -f .gitmodules submodule.src/foo/submodule.branch
。これは、長年のフォーク/広報である可能性があります。cdしてrepo rootにして実行しgit config submodule.src/foo/submodule.branch
ます。スーパープロジェクトの現在のgitブランチを使用することもできます。
git config submodule.src/foo/submodule.branch
レポローカル.gitconfigファイルを含むgitのコンフィグ、任意の様々な影響を受けることができます。(実行する必要がありますgit config --local include.path ./path/to/your/.gitconfig
)