2013-02-05 13 views
7

Quali tag terminano con "^ {}"? In realtà non esistono nel repository nudo.ls-remote riporta tag fantasma che terminano con "^ {}"

$ 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^{} 

Quando cerco di eliminarli con "git push: eredità^{}", per esempio, git risponde

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

Allora dove sono provenienti da? È un bug in ls-remote?

+0

Dupe di [Cosa significa^{} significa in git?] (Http://stackoverflow.com/questions/12938972/what-does-mean-in-git) – johnny

risposta

7

Il git rev-parse manual descrive i vari modi in cui è possibile specificare commit o altri oggetti in git. Per questo caso, si dice:

^{}, ad es. v0.99.8^{} Un suffisso^seguito da una coppia di parentesi vuote indica che l'oggetto potrebbe essere un tag e dereferenziare il tag in modo ricorsivo finché non viene trovato un oggetto non tag.

+0

Già visto. Grazie! –

2

ho voluto rinfusa eliminare i tag nel mio repository git remote, in alcuni documenti dei risultati che ho trovato da parte di Google, ho trovato il comando come

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

o qualcosa di simile. (Lo stesso problema che vi mostrerà i tag fantasma che terminano con^{})

Se si vuole fare la stessa cosa come me, si può provare a utilizzare il comando git show-ref

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

Nel in questo modo, non sarai bloccato da questo problema.

Problemi correlati