2013-02-05 2 views
7

'^ {}'で終わるタグは何ですか?それらは実際には裸のリポジトリには存在しません。ls-remoteは "^ {}"で終わるファントムタグを報告します

$ git ls-remote -t origin 
55f09717db93733b8f151763e7e28628f3f22129  refs/tags/Init 
dce13158fff0e95b8adcc5628f193a8c03bada9c  refs/tags/Init^{} 
2c9f64c306aa76e5b689bc2ffb41163aa255ac40  refs/tags/kaos-red 
0970feca84d87df60ec5e943da2f55f1947fd0a3  refs/tags/legacy 
dce13158fff0e95b8adcc5628f193a8c03bada9c  refs/tags/legacy^{} 

私はそれらを削除しようとすると:例えば "Gitのプッシュレガシー^ {}"、Gitは

fatal: remote part of refspec is not a valid name in :Init^{} 

を応答しますので、どこから来ていますか? ls-remoteのバグですか?

+0

[^ gitの意味は何ですか?](http://stackoverflow.com/questions/12938972/what-does-mean-in-git) – johnny

答えて

7

git rev-parse manualには、gitでコミットやその他のオブジェクトを指定できるさまざまな方法が記述されています。この場合、次のように表示されます。

^{} v0.99.8^{} 接尾辞^の後に空のブレースペアが続くことは、オブジェクトがタグであり、非タグオブジェクトが見つかるまで再帰的にタグを参照解除することを意味します。

+0

既に見ました。ありがとう! –

2

私は、リモートのgitリポジトリにタグを削除バルクに望んでいた、私はグーグルから見つかったいくつかの結果文書に、私は

git ls-remote --tag | awk '/(.*)(\s+)(.*)/ {print ":" $2}' | xargs git push origin 

またはそのような何かのようなコマンドを発見しました。 (同じ問題はそれがで終わるファントムタグが表示されます^ {})

あなたは私のように同じことをしたい場合は、あなたがGitのコマンドshow-refを

git show-ref --tag | awk '/(.*)(\s+)(.*)/ {print ":" $2}' | xargs git push origin 

を使用しようとすることができます後者の方法では、この問題によってブロックされません。

関連する問題