Git:タグがどのブランチにあるかを知る方法は?


84

私は現在、多くのブランチがあるプロジェクトで忙しく、ブランチの1つで行われた最後の変更のタグを持っています。しかし、このタグがどのブランチにあるのかは私にはわかりません。

タグがどのブランチにあるかを知る方法は?

回答:


118

さらに短い:

git branch --contains tags/<tag>

(ツリーっぽいリファレンスで機能します)


タグが参照しているコミットを見つけることができる場合:

 git rev-parse --verify tags/<tag>^{commit}
 # or, shorter:
 git rev-parse tags/<tag>~0

次に、そのコミットが含まれているブランチを見つけることができます。

git branch --contains <commit>

通りコメントして以下user3356885フェッチされた枝のために、(リモコン名前空間に支店)

git branch -a --contains tags/<tag>
git branch -a --contains <commit>

6
私のバージョンのGit1.7.1では、簡単に実行できますgit branch --contains <tag>
ダンモールディング2013

@DanMoulding true、私はそれを反映するように答えを編集しました。私は当初、タグに添付されたコミットを見つけることに興味がありました。
vonC 2013

6
この場合、リモートブランチで作成されたタグを探しても結果は生成されません。つまり、ローカルに存在しないブランチの結果は生成されません。そのためにはオプション-aを使用する必要があります。git branch -a --contains <tag>。同じことがコミットでも機能します。
user3356885 2016年

1
残念ながら、これは複数のものを返します:*(HEADは82dd3f0でデタッチされました)master refs / tags / 0.0.1-test-masterBr->プログラムでブランチにアクセスしたいのですが、HEAD情報やタグ自体はありません
herm 2017

@hermその場合は、試してみてくださいgit branch --no-merge tags/<a-tag>
VonC 2017

30

「gitbranch--contains」が何もしない場合は、リモートブランチとローカルブランチの両方のすべてのブランチを含めていることを確認してください。

git branch -a --contains <tag>

gitヘルプから:

特定のgit-branchアクション:-a、-allは、リモートトラッキングとローカルブランチの両方を一覧表示します


5
git branch --contains tag

私には何もしませんが、gitguiでこの問題の解決策を見つけました。

このように開始します。

git gui

(私のUbuntuでは、最初にでインストールする必要がありましたsudo apt-get install git-gui。)

次に、メニュー項目[リポジトリ] -> [すべてのブランチ履歴の視覚化]を選択しました。表示されたウィンドウで、メニュー項目[ファイル] -> [参照のリスト]を選択しました。

別のウィンドウがポップアップし、すべてのタグ(およびその他の参照)が一覧表示されました。これらはクリック可能で、そのうちの1つをクリックした後、左下のフレームでブランチのリストを確認する必要がありました。このような:

Parent: somesha (message)
Parent: someothersha (another message)
Child:  anothersha (yet another message)
Branches: branch1, master, remotes/origin/branch2, remotes/upstream/branch1, etc
Follows: v1.1.2
Precedes: v1.1.4

3

タグによって参照されるコミットの検索に関する@VonCのコメントに関しては、次を使用してください。

git show <tag>

タグは特定のコミットに関連付けられているため、そのコミットを表示するために使用できます。これにより、完全なコミットの詳細がわかります。


0

タグを使用して、参照をマークします。したがって、開発ブランチにいて、この状態にタグを付ける場合。あなたのタグは実際の参照にあります。したがって、この場合、ツリーが表示されているgitkまたは別のツールを探すことができます。ここで、タグがどの参照にあるかを確認できます。

git:ブランチごとのタグのようなものはありますか?
http://git-scm.com/book/en/Git-Basics-Tagging

ここに良い説明があります。


0

タグは常にコミット番号を参照しています。そのタグ番号を使用すると、これを使用してタグが配置されたブランチを見つけることができます。

git for-each-ref | grep ${commit_num} | grep origin | sed "s/.*\///"

0

あなたもこれを試すことができます、同様のユースケースを持っていました、そしてこれは私のために働きました

git ls-remote --heads origin | grep $CI_COMMIT_SHORT_SHA  | sed "s/.*\///"

少し異なりますが、@ ttfreemanの回答からインスピレーションを得ています


-1

git reflog --date = local | grep feature_xxx


3
私はこれが役立つとは思えません-あるいはまったく機能しません。そうでなければ私を納得させるために、これがどのように機能するのか、そしてなぜそれが役立つと思われるのかについての説明を追加してください。
ユンノッシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.