Quand Git actualise-t-il la liste des succursales distantes?

496

L'utilisation git branch --allmontre toutes les succursales distantes et locales . Quand Git actualise-t-il cette liste?

Sur tirer / pousser? Et comment puis-je le rafraîchir en utilisant Git Bash ?

BendEg
la source
5
En tant que note, cela git ls-remotepourrait être intéressant ici.
jthill

Réponses:

1221

Pour mettre à jour la liste locale des succursales distantes:

git remote update origin --prune

Pour afficher toutes les branches locales et distantes que Git (local) connaît

git branch -a
centralcmd
la source
143
git remote update origin --pruneest ce que je cherchais thx
WonderLand
6
Sur la différence entre cette réponse, qui utilise git remote update, et la réponse acceptée, qui utilise git fetch, voir ici
The Red Pea
6
c'est la bonne réponse. git fetchn'a pas supprimé mon cache local de branches distantes. Seul --pruneétait capable de tout nettoyer.
Felipe Alvarez
23
Vous pouvez demander à git de le faire automatiquement avecgit config remote.origin.prune true
kjhf
8
git remote prune origina le même effet et vous tapez moins.
Dvin
27

Je crois que si vous exécutez à git branch --allpartir de Bash, la liste des branches distantes et locales que vous voyez reflètera ce que votre Git local "sait" au moment où vous exécutez la commande. Parce que votre Git est toujours à jour en ce qui concerne les succursales locales de votre système, la liste des succursales locales sera toujours exacte.

Cependant, pour les succursales éloignées, ce n'est pas nécessairement le cas. Votre Git local ne connaît que les branches distantes qu'il a vues lors de la dernière extraction (ou extraction). Il est donc possible que vous exécutiez git branch --allet ne voyiez pas une nouvelle branche distante qui est apparue après la dernière extraction ou extraction.

Pour vous assurer que votre liste de succursales locale et distante est à jour, vous pouvez effectuer une opération git fetch avant de l' exécuter git branch --all.

Pour plus d'informations, les branches "distantes" qui apparaissent lorsque vous exécutez git branch --allne sont pas vraiment distantes du tout; ils sont en fait locaux. Par exemple, supposons qu'il y ait une branche sur la télécommande appelée featureque vous avez tirée au moins une fois dans votre Git local. Vous verrez origin/featurerépertorié comme une branche lorsque vous exécutez git branch --all. Mais cette branche est en fait une branche Git locale . Lorsque vous le faites git fetch origin, cette branche de suivi est mise à jour avec toutes les nouvelles modifications de la télécommande. C'est pourquoi votre état local peut devenir périmé, car il peut y avoir de nouvelles succursales distantes ou vos succursales de suivi peuvent devenir périmées.

Tim Biegeleisen
la source
4
Oui, git fetchje l'ai fait.
BendEg
14
Note aux downvoters: Si vous sentez que des informations correctes avec une explication bien intentionnée méritent un downvote, alors au moins exprimez-vous et laissez un commentaire.
Tim Biegeleisen
3
git fetchne fonctionne pas pour moi, besoin d'ajouter --prune. Btw, je ne suis pas downvoter;)
Deqing
3
git fetchne supprime pas les branches distantes supprimées. C'est probablement pourquoi certaines personnes ont voté
Jérôme MEVEL
@ JérômeMEVEL C'est une merveille pour moi que la réponse acceptée compte désormais 1000 votes positifs. C'est fou ... j'aurais aimé avoir ce genre d'exposition :-)
Tim Biegeleisen
24

L'OP n'a pas demandé de nettoyage pour toutes les télécommandes, plutôt pour toutes les branches de la télécommande par défaut.

C'est git fetch --prunece qui devrait être utilisé.

Le réglage git config remote.origin.prune truerend --pruneautomatique. Dans ce cas, il suffit git fetchégalement d'élaguer les branches distantes périmées de la copie locale. Voir aussi Taille automatique avec Git fetch ou pull .

Notez que cela ne nettoie pas les branches locales qui ne suivent plus une branche distante. Voir Comment tailler les branches de suivi locales qui n'existent plus sur la télécommande pour cela.

Oliver
la source
Pour faire un peu plus courtgit fetch -p
Michael Warner
2

Utilisez git fetchpour récupérer toutes les dernières branches créées.

vvv
la source
1
git fetchn'a rien changé pour moi avec git 2.17.1. Quelle version et quelles options avez-vous utilisées?
PointedEars
2
Vous avez besoin de l'un --pruneou de l' autre git config remote.NAME.prune truepour résoudre la question OP
Oliver
-1

Si vous utilisez Eclipse et souhaitez voir de nouvelles branches en amont;

Dans la perspective Git, faites un clic droit sur un référentiel Git, puis choisissez "Extraire de l'amont". Cela récupère de nouvelles branches distantes.

Selman Gun
la source
-8

Si vous utilisez Eclipse,

  1. Ouvrez "Git Repositories"
  2. Trouvez votre référentiel.
  3. Ouvrez "Branches" puis "Suivi à distance".

Git

Ils devraient tous être là-dedans. Clic droit et "checkout".

markthegrea
la source
Comment cela répond-il à la question? - "Quand Git actualise-t-il la liste des succursales distantes?"
Peter Mortensen
Quand j'ai voulu rafraîchir mes branches locales en éclipse, j'ai googlé et cela m'a amené ici. Ce message a en fait aidé quelques personnes car il a eu quelques votes positifs. J'ai peut-être mal compris la question. Pour moi, Eclipse EST Git (l'interface avec lui). Désolé d'avoir offensé tout le monde!
markthegrea