Come sovrascrivere i tag locali con git fetch? Voglio sostituire i tag locali con tag remoti.Come sovrascrivere i tag locali con git fetch?
risposta
git fetch --tags
lo farà.
Dalla docs (descrizione del parametro --tags
):
La maggior parte dei tag vengono prelevati automaticamente come responsabili di filiali vengono scaricati, ma i tag che non puntano a oggetti raggiungibili dai responsabili di filiali che vengono tracciato non verrà recuperato da questo meccanismo. Questo flag consente di scaricare tutti i tag e i relativi oggetti associati. Il comportamento predefinito per un telecomando può essere specificato con l'impostazione remote..tagopt.
I tag non verranno sovrascritti, perché sono pensati per essere immutabili. Se vuoi avere un oggetto che sia (realisticamente) modificabile, usa invece un puntatore di ramo o un riferimento. Questo ti lascia: git tag -d tagname ..., e poi recuperarlo di nuovo.
Non sono d'accordo con la tua prima affermazione - Questo potrebbe distorcere l'intero punto di utilizzo di un VCS, non credi? – lightonphiri
Git non incoraggia la riscrittura (già condivisa, remota) della cronologia. Ciò non sconfigge il punto di un VCS - che è quello di mantenere la storia! Nella maggior parte dei casi è possibile forzare tali cose a verificarsi ma può causare parecchi problemi. –
git fetch --tags --all --prune
questo vi dirà esplicitamente git per andare a prendere, e, allo stesso tempo, rimuovere i tag che non esistono più sul telecomando.
Questo non sembra rimuovere i tag che sono sempre presenti solo localmente. –
@MartijnHeemels, git non può distinguere tra un tag che non è mai stato premuto e un tag che è stato rimosso dal telecomando. –
Innanzitutto, a differenza delle filiali, git non tiene traccia dei tag remoti diversi dai tag locali. Una volta finito di andare a prendere, sono indistinguibili.
- fa aggiornare il tag locale (anche se il manuale non dice)
git fetch --tags
- non aggiorna il tag locale
git fetch
git fetch --prune
git fetch --prune --force
Un tag di aggiornamento/sovrascrittura appare così:
From git:path/name
- [tag update] my_tag -> my_tag
Questo funziona per i tag leggeri e annotati, anche misti. Cioè: un tag annotato potrebbe essere sovrascritto con uno leggero e viceversa.
ho usato git versione 2.7.4
nota: questo non elimina i tag che sono stati cancellati sul telecomando –
@CarlosHeuberger Il tuo commento suggerisce che credi ci sia un modo per farlo, ma non c'è. Puoi infatti eliminare tutti i tag locali non esistenti sul telecomando, ma elimina anche tag _local che non erano mai sul telecomando affatto (ad esempio non ancora spinti o tag per scopi solo locali). Non c'è modo di cancellare solo i tag che sono stati _deleted sul remote_. –
Non so perché pensi che il mio commento lo stia suggerendo - non ho mai scritto c'è un modo per farlo!?!. Ho solo cercato di completare la tua risposta perché da nessuna parte si afferma che i tag locali non vengono cancellati e "aggiorna il tag locale" potrebbe essere inteso anche come la rimozione di un tag che è stato rimosso sul telecomando. Penso che sia stata una dichiarazione chiara (senza suggerimenti nascosti) ... ma il mio inglese è probabilmente peggio di quanto penso. –
- 1. Git: come sovrascrivere le modifiche locali?
- 2. Git shallow fetch di un nuovo tag
- 3. GIT pull/fetch da tag specifico
- 4. Git non mostra tutti i rami locali
- 5. Git: come funziona git svn fetch?
- 6. Git clone --bare/fetch
- 7. Come ignorare alcuni rami/tag che vengono copiati in git locale quando do git fetch --all
- 8. Git: cosa significano i numeri riportati da `git fetch`?
- 9. come sovrascrivere con un git push, sovrascrivere le modifiche al server git?
- 10. Git pull ha bisogno di scartare i file locali
- 11. come utilizzare i tag in GIT
- 12. Recupero tutti i tag da un telecomando con git tirare
- 13. Git non sembra voler mantenere i riferimenti locali all'origine/master
- 14. Dove si posiziona 'git fetch'?
- 15. Come elencare tutti i tag Git?
- 16. distanza predefinita per git fetch
- 17. Git fetch/pull ha smesso di funzionare
- 18. Git Svn Fetch Altre revisioni
- 19. Git: pull vs. fetch → pull
- 20. Come risolvere git repository interrotto da git fetch interrotto?
- 21. Jenkins (Windows) molto lento git fetch
- 22. git fetch vs. git fetch origine master ha diversi effetti sul ramo di rilevamento
- 23. Git diff con tag remoto
- 24. E 'possibile sovrascrivere il comando git con git alias?
- 25. Git fetch/checkout senza creare il telecomando?
- 26. Perché git fetch tramite hudson fallisce, mentre git fetch tramite la riga di comando funziona?
- 27. git fetch ramo remoto e rif rif.
- 28. git fetch spettacoli nulla sulla console
- 29. come sovrascrivere il commit con uno nuovo su git?
- 30. Git: Annulla le modifiche locali; aggiungi git. + git rm?
Ma mi chiedo come sovrascrivere i tag locali esistenti, perché sono stati creati erroneamente – linquize
'git fetch --tags' sarà in aggiornamento fatto esistenti variabili locali, ad esempio, se il tag remoto FOO esegue il mapping a 1234567 e il tag locale FOO esegue il mapping a fedcba9, 'git fetch --tags' sostituirà FOO con 1234567. – torek
Aggiornamento: nelle versioni più recenti di git, questo non aggiornerà più i tag locali. Puoi invece forzarli ad aggiornarli, con 'git fetch '+ refs/tags/*: refs/tags/*'' ('--force' potrebbe funzionare anche, ma non l'ho provato). –
torek