Comment puis-je lister toutes les branches distantes dans Git 1.7+?

j'ai essayé git branch -r , mais cela ne Liste que les branches distantes que j'ai localisées. Comment puis-je trouver la liste de ceux que je n'ai pas? (Peu m'importe que la commande Liste toutes les branches distantes ou seulement celles qui ne sont pas tracées.)

427
demandé sur James A. Rosen 2010-08-13 00:37:33

15 réponses

pour la grande majorité [1] des visiteurs ici, la réponse correcte et la plus simple à la question " Comment puis-je lister toutes les branches éloignées en Git 1.7+?"est:

git branch -r

pour une petite minorité [1] git branch -r ça ne marche pas. Si git branch -r ne fonctionne pas essayer:

git ls-remote --heads <remote-name>

Si git branch -r ne fonctionne pas, alors peut-être que Cascabel dit "vous avez modifié la valeur par défaut refspec, de sorte que git fetch et git remote update ne pas récupérer tous les remote branches" .


[1] au moment de la rédaction de cette note de bas de page 2018-Feb, j'ai examiné les commentaires et je constate que le git branch -r fonctionne pour la grande majorité (environ 90% ou 125 sur 140 ).

si git branch -r ne fonctionne pas, cochez git config --get remote.origin.fetch contient un joker ( * ) selon cette réponse " 151919090920"

527
répondu Dustin 2018-06-22 11:40:20

remote show montre toutes les branches sur la télécommande, y compris celles qui ne sont pas localisées et même celles qui n'ont pas encore été récupérées.

git remote show <remote-name>

il essaie également de montrer le statut des branches par rapport à votre repo local:

> git remote show origin
* remote origin
  Fetch URL: C:/git/.\remote_repo.git
  Push  URL: C:/git/.\remote_repo.git
  HEAD branch: master
  Remote branches:
    branch_that_is_not_even_fetched new (next fetch will store in remotes/origin)
    branch_that_is_not_tracked      tracked
    branch_that_is_tracked          tracked
    master                          tracked
  Local branches configured for 'git pull':
    branch_that_is_tracked merges with remote branch_that_is_tracked
    master                 merges with remote master
  Local refs configured for 'git push':
    branch_that_is_tracked pushes to branch_that_is_tracked (fast-forwardable)
    master                 pushes to master                 (up to date)
133
répondu Klas Mellbourn 2016-01-22 09:26:01
git branch -a | grep remotes/*
43
répondu Idan K 2010-08-12 20:48:25

utilisant git branch -r liste Toutes les branches distantes et git branch -a liste toutes les branches locales et distantes. Ces listes deviennent périmées. Pour garder ces listes à jour, Lancez

git remote update --prune

qui mettra à jour votre liste de branches locales avec toutes les nouvelles de la télécommande et supprimera celles qui n'y sont plus. L'exécution de cette commande de mise à jour sans l'option --prune permet de récupérer de nouvelles branches mais pas d'en Supprimer qui ne sont plus sur la télécommande.

You peut accélérer cette mise à jour en spécifiant une télécommande, sinon il va tirer les mises à jour de tous les télécommandes que vous avez ajouté, comme

git remote update --prune origin
32
répondu Nicholas Gronow 2017-02-16 14:00:50

mais

git branch -ar

devrait le faire.

30
répondu Seakayone 2013-03-24 11:25:27

vous pouvez aussi faire git fetch suivi d'un git branch -r . Sans fetch, vous ne verrez pas les branches les plus courantes.

16
répondu Max Sohrt 2014-03-04 09:22:30

Branchement De Gitan-Ramifications Éloignées

git ls-remote

git documentation .

16
répondu Michael Horojanski 2017-07-04 21:08:10

la façon la plus simple que j'ai trouvée:

git branch -a
8
répondu Damian Lattenero 2017-08-04 14:42:35

la meilleure commande à exécuter est git remote show [remote] . Cela montrera toutes les branches, distantes et locales, tracées et non tracées.

voici un exemple d'un projet open source:

> git remote show origin
* remote origin
  Fetch URL: https://github.com/OneBusAway/onebusaway-android
  Push  URL: https://github.com/OneBusAway/onebusaway-android
  HEAD branch: master
  Remote branches:
    amazon-rc2                   new (next fetch will store in remotes/origin)
    amazon-rc3                   new (next fetch will store in remotes/origin)
    arrivalStyleBDefault         new (next fetch will store in remotes/origin)
    develop                      tracked
    master                       tracked
    refs/remotes/origin/branding stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    develop merges with remote develop
    master  merges with remote master
  Local refs configured for 'git push':
    develop pushes to develop (local out of date)
    master  pushes to master  (up to date)

si nous voulons seulement obtenir les branches distantes, nous pouvons utiliser grep . La commande que nous voudrions utiliser serait:

grep "\w*\s*(new|tracked)" -E

avec cette commande:

> git remote show origin | grep "\w*\s*(new|tracked)" -E
    amazon-rc2                   new (next fetch will store in remotes/origin)
    amazon-rc3                   new (next fetch will store in remotes/origin)
    arrivalStyleBDefault         new (next fetch will store in remotes/origin)
    develop                      tracked
    master                       tracked

vous pouvez également créer un alias pour ce:

git config --global alias.branches "!git remote show origin | grep \w*\s*(new|tracked) -E"

alors vous pouvez simplement lancer git branches .

5
répondu Anubian Noob 2015-07-06 14:33:42

TL;TR;

C'est la solution de votre problème:

git remote update --prune    # To update all remotes
git branch -r                # To display remote branches

ou:

git remote update --prune    # To update all remotes
git branch <TAB>             # To display all branches
3
répondu simhumileco 2017-10-28 16:42:11

avec GitBash, vous pouvez utiliser:

git branch -a

1
répondu ISSAM RESS 2017-12-12 13:13:01

j'ai fini par faire un mess shell pipeline pour obtenir ce que je voulais, juste fusionné branches de la télécommande d'origine:

git branch -r --all --merged \
    | tail -n +2 \
    | grep -P '^  remotes/origin/(?!HEAD)' \
    | perl -p -e 's/^  remotes\/origin\///g;s/master\n//g'
0
répondu ThorSummoner 2015-07-31 18:49:31

utilisant cette commande,

git log -r --oneline --no-merges --simplify-by-decoration --pretty=format:"%n %Cred CommitID %Creset: %h %n %Cred Remote Branch %Creset :%d %n %Cred Commit Message %Creset: %s %n"


CommitID       : 27385d919 
Remote Branch  : (origin/ALPHA) 
Commit Message :  New branch created

liste Toutes les branches distantes,y compris les messages de propagation, l'Id de propagation qui sont référés par les branches distantes.

0
répondu Nayagam 2018-03-01 12:53:19

assurez-vous que l'origine distante que vous listez est vraiment le dépôt que vous voulez et non un clone plus ancien.

-1
répondu user3737174 2014-06-13 09:28:17

essayer

 git branch -at
-2
répondu Jed Schneider 2010-08-12 20:41:14