web-dev-qa-db-fra.com

Comment lister toutes les branches distantes dans Git 1.7+?

J'ai essayé git branch -r, mais cela ne répertorie que les branches distantes que j'ai suivies localement. Comment trouver la liste de ceux que je n'ai pas? (Peu importe pour moi que la commande répertorie toutes branches distantes ou uniquement celles qui ne sont pas suivies.)

483
James A. Rosen

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

git branch -r

Pour une petite minorité[1] git branch -r ne fonctionne pas. Si git branch -r ne fonctionne pas, essayez:

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

Si git branch -r ne fonctionne pas, alors peut-être que Cascabel indique "vous avez modifié la référence par défaut, de sorte que git fetch et git remote update ne récupèrent pas toutes les branches de la remote" .


[1] Au moment de la rédaction de cette note de bas de page 2018-février, j’ai examiné les commentaires et constaté que le git branch -r fonctionnait pour la grande majorité (environ 90% ou 125 sur 140 ). 

Si git branch -r ne fonctionne pas, vérifiez que git config --get remote.Origin.fetch contient un caractère générique (*) selon cette réponse

607
Dustin

remote show affiche toutes les branches de la télécommande, y compris celles qui ne sont pas suivies localement et même celles qui n'ont pas encore été extraites.

git remote show <remote-name>

Il essaie également de montrer le statut des branches par rapport à votre référentiel 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)
148
Klas Mellbourn
git branch -a | grep remotes/*
46
Idan K

Utiliser git branch -r répertorie toutes les branches distantes et git branch -a répertorie toutes les branches locales et distantes. Ces listes deviennent cependant obsolètes. Pour maintenir ces listes à jour, exécutez

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 --Prune récupérera de nouvelles branches, mais ne supprimera pas celles qui ne sont plus sur la télécommande.

Vous pouvez accélérer cette mise à jour en spécifiant une télécommande, sinon elle extraira les mises à jour de toutes les télécommandes que vous avez ajoutées, comme ceci

git remote update --Prune Origin
36
Nicholas Gronow

Mais 

git branch -ar

devrait le faire.

29
Seakayone

Git Branching - Branches distantes

git ls-remote

Documentation Git .

17
Michael Horojanski

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

17
Max Sohrt

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

git branch -a
9
Damian Lattenero

TL; TR;

Ceci 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
5
simhumileco

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

Voici un exemple tiré 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 cela:

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

Ensuite, vous pouvez simplement exécuter git branches.

5
Anubian Noob

Avec GitBash, vous pouvez utiliser:

branche git -a

3
ISSAM RESS

Assurez-vous que l'origine distante que vous répertoriez est bien le référentiel que vous souhaitez et non un clone plus ancien.

0
user3737174

En 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

Répertorie toutes les branches distantes, y compris les messages de validation, les ID de validation référencés par les branches distantes.

0
Nayagam

essaye ça....

git fetch Origin
git branch -a
0
Ashish Mehta

Il suffit de lancer une commande git fetch. Toutes les succursales distantes seront acheminées vers votre dépôt local, puis un git branch -a pour répertorier toutes les succursales.

0
Manjunatha B

J'ai fini par créer un pipeline Shell pour obtenir ce que je voulais. Je viens de fusionner des branches à partir de la télécommande Origin:

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
ThorSummoner

Si vous savez qu'une branche distante devrait figurer dans la liste, mais qu'elle ne le fait pas, vous pouvez vérifier que votre origine est correctement configurée avec ceci:

git remote show Origin

Si tout va bien, vous devriez peut-être lancer une mise à jour:

git remote update

En supposant que cela fonctionne avec succès, vous devriez pouvoir faire ce que les autres réponses disent:

git branch -r
0
ArtOfWarfare

J'utiliserais:

git branch -av

Cette commande affiche non seulement la liste de toutes les branches, y compris les branches distantes commençant par /remote, mais vous fournit également le retour d'informations * sur ce que vous avez mis à jour et les derniers commentaires de validation.

0
prosti