Question

J'ai essayé git branch -r, mais qui répertorie uniquement les branches éloignées que je l'ai suivi au niveau local. Comment puis-je trouver la liste de ceux que je n'ai pas? (Peu importe pour moi si les listes de commandes tous branches à distance ou seulement ceux qui sont untracked.)

Était-ce utile?

La solution

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

git branch -r

Pour une petite minorité [1] git branch -r ne travail pas. Si git branch -r ne cherche pas de travail:

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

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


[1] la date de rédaction de cette note 2018-février, je regardais les commentaires et voir que les travaux de git branch -r pour la grande majorité (environ 90% ou 125 sur 140 ).

Si git branch -r ne fonctionne pas, vérifier git config --get remote.origin.fetch contient un caractère générique (*) comme par cette réponse

Autres conseils

remote show montre toutes les branches de la télécommande, y compris ceux qui ne sont pas suivis localement et même ceux qui ne l'ont pas encore été tiré par les cheveux.

git remote show <remote-name>

Il essaie aussi de montrer l'état des branches relatives à votre repo locale:

> 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)
git branch -a | grep remotes/*

Utilisation de listes de git branch -r toutes les branches à distance et des listes de git branch -a toutes les branches sur local et à distance. Ces listes sont obsolètes bien. Pour conserver ces listes à jour, exécutez

git remote update --prune

qui mettra à jour votre liste de branche locale avec toutes les nouvelles de la télécommande et supprimer ceux qui ne sont plus là. L'exécution de cette commande de mise à jour sans --prune récupérera de nouvelles succursales, mais les supprime pas non plus sur la télécommande.

Vous pouvez accélérer cette mise à jour en spécifiant une distance, sinon il va tirer des mises à jour de toutes les télécommandes que vous avez ajoutés, comme si

git remote update --prune origin

git branch -ar

devrait le faire.

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

Git Branching - Branches à distance

git ls-remote

documentation Git .

La façon la plus simple que je trouve:

git branch -a

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

La meilleure commande à exécuter est git remote show [remote]. Cela montrera toutes les branches, à distance et local, suivi et untracked.

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 juste obtenir les branches à distance, 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.

Avec GitBash, vous pouvez utiliser:

  

branche git -a

essayer ....

git fetch origin
git branch -a

Assurez-vous que l'origine à distance que vous énumérez est vraiment le dépôt que vous voulez et non pas un clone plus.

J'ai fini par faire un pipeline shell mess pour obtenir ce que je voulais, juste branches fusionnées à l'origine à distance:

git branch -r --all --merged \
    | tail -n +2 \
    | grep -P '^  remotes/origin/(?!HEAD)' \
    | perl -p -e 's/^  remotes\/origin\///g;s/master\n//g'

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

Liste toutes les branches éloignées, y compris les messages de commettre, commettre Id qui sont visés par des branches éloignées.

J'utiliser:

git branch -av

Cette commande vous montre non seulement la liste de toutes les branches, y compris les succursales à distance commençant par /remote, mais vous fournit les évaluations de * sur ce que vous mettiez à jour et le dernier commit des commentaires.

S'il y a une branche à distance que vous savez doivent être énumérés, mais il ne reçoit pas la liste, vous pourriez vouloir vérifier que votre origine est correctement configuré avec ceci:

git remote show origin

Si c'est tout bon, peut-être vous devez exécuter une mise à jour:

git remote update

En supposant que fonctionne avec succès, vous devriez être en mesure de faire ce que disent les autres réponses:

git branch -r

Il suffit de lancer une commande git fetch. Il va tirer toutes les branches à distance à votre repo local, puis faire une git branch -a à la liste de toutes les branches.

essayer

 git branch -at
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top