Quando Git aggiorna l'elenco dei rami remoti?


496

L'uso git branch --allmostra tutte le filiali remote e locali . Quando Git aggiorna questo elenco?

In pull / push? E come lo aggiorno usando Git Bash ?


5
Come nota, git ls-remotepotrebbe essere interessante qui.
jill

Risposte:


1221

Per aggiornare l'elenco locale di filiali remote:

git remote update origin --prune

Per mostrare tutte le filiali locali e remote che Git (locale) conosce

git branch -a

143
git remote update origin --pruneè quello che stavo cercando grazie
WonderLand

6
Sulla differenza tra questa risposta, che utilizza git remote update, e la risposta accettata, che utilizza git fetch, vedi qui
Il pisello rosso

6
questa è la risposta corretta git fetchnon ho rimosso la cache locale dei rami remoti. Solo è --prunestato in grado di ripulire tutto.
Felipe Alvarez,

23
Puoi fare in modo che git lo faccia automaticamente congit config remote.origin.prune true
kjhf,

8
git remote prune originha lo stesso effetto e si digita meno.
Dvin,

27

Credo che se corri git branch --allda Bash che l'elenco dei rami remoti e locali che vedi rifletterà ciò di cui il tuo Git locale "sa" al momento dell'esecuzione del comando. Poiché Git è sempre aggiornato per quanto riguarda le filiali locali nel sistema, l'elenco delle filiali locali sarà sempre accurato.

Tuttavia, per le filiali remote questo non è necessario. Il tuo Git locale conosce solo i rami remoti che ha visto nell'ultimo recupero (o pull). Quindi è possibile che tu possa eseguire git branch --alle non vedere un nuovo ramo remoto che è apparso dopo l'ultima volta che hai recuperato o tirato.

Per assicurarsi che l' elenco delle filiali locali e remote sia aggiornato, è possibile eseguire una git fetch prima di eseguire git branch --all.

Per ulteriori informazioni, i rami "remoti" che compaiono quando si esegue git branch --allnon sono affatto remoti; sono in realtà locali. Ad esempio, supponiamo che ci sia un ramo sul telecomando chiamato featureche hai inserito almeno una volta nel tuo Git locale. Vedrai origin/featureelencato come un ramo quando corri git branch --all. Ma questo ramo è in realtà un ramo Git locale . Quando lo fai git fetch origin, questo ramo di tracciamento viene aggiornato con eventuali nuove modifiche dal telecomando. Questo è il motivo per cui il tuo stato locale può diventare stantio, perché potrebbero esserci nuovi rami remoti o i tuoi rami di monitoraggio possono diventare stantii.


4
Sì, l' git fetchho fatto.
BendEg

14
Nota per i votanti: se ritieni che le informazioni corrette con una spiegazione ben intenzionata meritino un voto negativo, almeno parla e lascia un commento.
Tim Biegeleisen il

3
git fetchnon funziona per me, è necessario aggiungere --prune. A proposito, non sono downvoter;)
Deqing

3
git fetchnon rimuove i rami remoti cancellati. Questo è probabilmente il motivo per cui alcune persone hanno effettuato il downgrade
Jérôme MEVEL il

@JérômeMEVEL Per me è una meraviglia che la risposta accettata abbia ora 1000 voti. È pazzesco ... vorrei avere quel tipo di esposizione :-)
Tim Biegeleisen il

24

L'OP non ha richiesto la pulizia per tutti i telecomandi, piuttosto per tutti i rami del telecomando predefinito.

Quindi git fetch --pruneè ciò che dovrebbe essere usato.

L'impostazione git config remote.origin.prune truerende --pruneautomatica. In tal caso, git fetchpotremo anche eliminare rami remoti stantii dalla copia locale. Vedi anche Potatura automatica con Git fetch o pull .

Si noti che ciò non pulisce i rami locali che non stanno più monitorando un ramo remoto. Per questo, vedi Come eliminare rami di localizzazione locali che non esistono più sul telecomando .


Per renderlo un po 'più brevegit fetch -p
Michael Warner,

2

Utilizzare git fetchper recuperare tutti gli ultimi rami creati.


1
git fetchnon ha cambiato nulla per me con git 2.17.1. Quale versione e opzioni hai utilizzato?
Pointed Ears

2
È necessario --pruneo git config remote.NAME.prune trueper risolvere questo problema OP
Oliver

-1

Se stai usando Eclipse e vuoi vedere nuovi rami da monte;

Nella prospettiva Git, fai clic con il pulsante destro del mouse su un repository Git e quindi scegli "Scarica da upstream". Questo recupera nuovi rami remoti.


-8

Se stai usando Eclipse,

  1. Apri "Git Repositories"
  2. Trova il tuo repository.
  3. Apri "Branches" quindi "Remote Tracking".

Idiota

Dovrebbero essere tutti lì dentro. Fare clic destro e "checkout".


Come risponde alla domanda? - "Quando Git aggiorna l'elenco dei rami remoti?"
Peter Mortensen,

Quando volevo rinfrescare le mie filiali locali in eclissi, ho cercato su Google e mi ha portato qui. Questo post ha effettivamente aiutato alcune persone in quanto ha avuto alcuni voti positivi. Forse ho frainteso la domanda. Per me, Eclipse IS Git (l'interfaccia per esso). Ci scusiamo per aver offeso tutti!
markthegrea,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.