2015-09-23 8 views
5

大規模なプロジェクト、10個のリポジトリ、チェックアウトブランチ(ローカル、リモート、タグ)のスクリプトを持っていて、最終的に各リポジトリの現在のブランチを表示します。複数のタグを持つコミットの最新タグを表示する

私はgit branchを使用して、現在のリポジトリでチェックアウトされているブランチまたはタグを表示します。これは、同じコミットの中に複数のタグがある場合を除いて、ほとんどの場合にうまく動作し、そのコミットに含まれるもののランダムなタグを出力します。

どうすればこの問題を解決できますか?別の方法で実装する必要がありますか?

for repo in ... 
do 
    cd repo 
    git checkout $1 || git checkout $2 || git checkout $3 .... 
    git branch ##(to verify what happened) 
done 

だから、ALL6git branchディスプレイ私は特にチェックアウトに尋ね代わりALL7ALL6をコミット私は./checkoutAll feat1 origin/feat1 tags/ALL7 を実行しますが、ALL7タグが同じであると言うことができます。

EDIT:下の画像は、私を支援しようと、人々を支援することで、

enter image description here

それでは、私はgit checkout tags/V9.00.00.ALL.04 を実行しましょうその後、gitのブランチは、そのもののランダムタグ(* detached from ..)が表示されますこの例では7です。 最新の情報を表示する方法はありますか?または少なくとも私がチェックアウトに尋ねたものを表示する(たとえALL7がALL9と同じであっても)?

答えて

3

これらのタグを表示する場所は明確ではありませんが、手伝ってください。我々は両方を持っていることを、我々は印刷にそれらを一致させることができます今すぐ

git show-ref --tags --dereference 

:のすべてのタグを見つけてみましょう、そして、

git rev-parse HEAD 

まずは、現在のブランチの最新のコミットハッシュを見つけてみましょう/あなたが何を求めているかを示します。たとえば、次のように

SHA_HEAD=$(git rev-parse HEAD) 
ALL_TAGS=$(git show-ref --tags --dereference) 
echo "$ALL_TAGS" | awk '/'$SHA_HEAD' refs\/tags\// { print $2 }' | tr '\n' ' ' 

またはワンライナーで:

git show-ref --tags --dereference | awk '/'$(git rev-parse HEAD)' refs\/tags\// { print $2 }' | tr '\n' ' ' 
+0

を使用し、すべてのシンボリック引用文献を見るには

$ git tag --points-at TAG # (or HEAD) 

を、これが唯一のタグが表示されます現在のコミット用に作成されました。それがOPが望んでいるかどうかは分かりません。 – jweyrich

+0

すごいよ、私は答えを出す前に質問を編集した。 – thahgr

1

いいえ、方法はありません。gitは、あなたがブランチ上にいるという概念を常に持っているとは限りません。あなたが単一のコミットをチェックアウトした場合、例えばタグをチェックすることによって、あなたはブランチ上にないので、gitはあなたがどのブランチであるかを伝えることができません。

私が知っている限り、gitブランチは、現在のブランチの名前を表示する必要があります。

2

タグをチェックアウトすると、あなたは通常「ヘッドレス」のチェックアウトで終わるだろう、とgit branchは言うだろう:

$ git branch 
* (detached from TAG) 

このタグが "オン"のブランチを知りたい場合は、タグ付きリファレンスがレポに知られているブランチの祖先であるかどうかを確認できます。

$ git branch --contains TAG # (or HEAD) 

通常、タグを配置した後に任意の数のブランチが作成される可能性があるため、複数の候補が表示されます。どちらが "the"ブランチであるかはあなた次第です。

あなたが現在チェックアウトrefと、使用時に指しているすべてのタグを見たい場合は:もちろん

$ git log --oneline --decorate -1 
関連する問題