Como faço para listar todos os ramos remotos no Git 1.7+?

Já tentei, mas isso só lista ramificações remotas que localizei localmente. Como encontro a lista daqueles que não encontrei? (Não me importa se a lista de comandos todos os ramos remotos ou apenas aqueles que não são rastreados.)

Author: James A. Rosen, 2010-08-13

15 answers

Para a grande maioria[1] dos visitantes aqui, a resposta correta e mais simples para a pergunta " Como faço para listar todos os ramos remotos no Git 1.7+?"é:

git branch -r

Para uma pequena minoria[1]git branch -r não funciona. Se git branch -r não funcionar tente:

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

Se git branch -r não funciona, então, talvez, como Cascabel diz "que você tenha modificado o padrão refspec, de modo que git fetch e git remote update não buscar todos os remote's branches " .


[1] Como a redação desta nota de rodapé 2018-Fev, eu olhei os comentários e ver que o git branch -r funciona para a grande maioria (cerca de 90% ou 125 de 140).

Se git branch -r não funcionar, verifique git config --get remote.origin.fetch contém uma placa especial (*) de acordo com esta resposta

 527
Author: Dustin, 2018-06-22 11:40:20

remote show mostra todos os ramos no remoto, incluindo aqueles que não são rastreados localmente e mesmo aqueles que ainda não foram obtidos.

git remote show <remote-name>

Ele também tenta mostrar o estado dos ramos em relação ao seu 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
Author: Klas Mellbourn, 2016-01-22 09:26:01
git branch -a | grep remotes/*
 43
Author: Idan K, 2010-08-12 20:48:25

Usando git branch -r lista todos os ramos remotos e git branch -a Lista todos os ramos locais e remotos. Estas listas ficam desactualizadas. Para manter estas listas atualizadas, execute

git remote update --prune

Que irá actualizar a sua lista de ramificações local com todas as novas do remoto e remover todas as que já não existem. A execução deste comando de actualização sem o --prune irá obter novos ramos, mas não irá apagar os que já não estão no comando remoto.

Pode acelerar esta actualização especificando um comando remoto, caso contrário, ele irá obter atualizações de todos os comandos que você adicionou, como por exemplo

git remote update --prune origin
 32
Author: Nicholas Gronow, 2017-02-16 14:00:50

Mas

git branch -ar

Deve fazê-lo.

 30
Author: Seakayone, 2013-03-24 11:25:27

Também pode fazer git fetch seguido de um git branch -r. Sem a obtenção, não irá ver os ramos mais actuais.

 16
Author: Max Sohrt, 2014-03-04 09:22:30

Ramificações Git-Ramificações Remotas

git ls-remote

Documentação Git .

 16
Author: Michael Horojanski, 2017-07-04 21:08:10

A maneira mais simples que encontrei:

git branch -a
 8
Author: Damian Lattenero, 2017-08-04 14:42:35

O melhor comando a executar é git remote show [remote]. Isto irá mostrar todos os ramos, remotos e locais, rastreados e não rastreados.

Aqui está um exemplo de um projeto de código aberto:

> 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)
Se queremos apenas obter os ramos remotos, podemos usar grep. O comando que gostaríamos de usar seria:
grep "\w*\s*(new|tracked)" -E

Com este comando:

> 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

Também pode criar um pseudónimo para isto:

git config --global alias.branches "!git remote show origin | grep \w*\s*(new|tracked) -E"
Então podes correr.
 5
Author: Anubian Noob, 2015-07-06 14:33:42

TL; TR;

Esta é a solução do seu problema:

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
Author: simhumileco, 2017-10-28 16:42:11

Com GitBash, pode usar:

Git branch-a

 1
Author: ISSAM RESS, 2017-12-12 13:13:01
Acabei por fazer um oleoduto de conchas para conseguir o que queria, apenas fundi ramos do remoto de origem.
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
Author: ThorSummoner, 2015-07-31 18:49:31

Usando este comando,

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

Lista todos os ramos remotos, incluindo as mensagens de commit, o ID de commit que são referidos por ramos remotos.

 0
Author: Nayagam, 2018-03-01 12:53:19

Certifique-se que a origem remota que está a listar é realmente o repositório que deseja e não um clone mais antigo.

 -1
Author: user3737174, 2014-06-13 09:28:17

Tenta

 git branch -at
 -2
Author: Jed Schneider, 2010-08-12 20:41:14