2015-07-17 14 views
5

Un tag è stato creato che contiene "A" nel nome, io sono in grado di eliminare il tag provato quanto segue:Impossibile eliminare tag GIT a causa del carattere speciale "A"

git tag -d -- xxÃxx 
git push origin :refs/tags/xxÃxx 

git config --global core.precomposeunicode true 
git tag -d -- xxÃxx 
git push origin :refs/tags/xxÃxx 

provato anche con doppie virgolette per il nome.

Durante l'esecuzione dei comandi git dice che il tag è stato eliminato: locale eliminare:

Deleted tag 'xxÃxx' (was 434eae7) 

Dopo push:

remote: warning: Allowing deletion of corrupt ref. 
- [deleted]   xxÃxx 

Tag "xxÃxx" si presenta come nuovo ad ogni git fetch -p o git pull (evento dopo due tiri consecutivi).

Ha anche provato a eliminare il tag dall'albero dei sorgenti ma il tag appare di nuovo.

+0

Quale versione di Git stai usando? – VonC

+0

Non ho idea di cosa ti aspetti 'git -d - ...' - forse dovrebbe essere 'git tag -d - ...' ?. Inoltre, 'config ...' probabilmente manca un prefisso 'git', altrimenti se fa qualcosa, non è correlato a git ... – twalberg

+0

@VonC git versione 1.8.4 –

risposta

2

Per interrompere la ricezione del tag 'xxÃxx' come un nuovo tag ad ogni pull/fetch. Ho fatto un clone del repository.

Non ho trovato una soluzione su come effettivamente eliminare il tag, ma questo è accettabile per me.

Un ringraziamento speciale a @VonC.

+1

Sono contento che tu abbia funzionato alla fine (anche se è una soluzione). +1 – VonC

1

Probabilmente sono troppo testardo, ma volevo trovare una soluzione che non implicasse l'eliminazione del repository e la clonazione di nuovo, quindi eccoci qui.

Il mio tag non valido era ◊v2.2.29.

Aggiungere un refit .git/packed-refs ha fatto il trucco per me. Basta duplicare (o aggiungere) una riga nel file compresso-arbitri e cambiare il tag problematica, nel formato:

refs 1ea677c29c1db49a284b3a0b44a5e96fda873da2/tag/◊v2.2.29

non ti servono per conoscere l'ID oggetto reale per quel tag, ma è necessario uno valido dal tuo progetto. Nel mio esempio 1ea677c29c1db49a284b3a0b44a5e96fda873da2 è solo un ID oggetto di un tag diverso che avevo (non importa quale, naturalmente, sceglierne uno da una linea diversa nello stesso file) e il problema è risolto.

Nota a margine: Se si assegna un ID oggetto che non esiste affatto git si lamenterà che non è valido o continua a considerarlo come un nuovo tag, a seconda che la struttura sia corretta o meno.

+0

Grazie per essere testardo ma non cercherò di replicare per sistemarlo di nuovo. Ne avevo abbastanza di ciascuno: P –

+0

@FlorianStoica - grazie per la risposta. Se vuoi verificare questa soluzione senza rischiare nulla, puoi semplicemente clonare il repository in una nuova cartella, quindi andare a .git/packed-refs nella nuova cartella/clone e rimuovere la riga con il tag errato. Poi vedrai che sta creando il tag su ogni pull e se aggiungi nuovamente la riga a .git/packed-refs smetterà di farlo. L'ho verificato anche su un paio di computer – shuki

Problemi correlati