Um comando de porcelana, não é bom se você deseja isso para scripts:
git branch -vv # doubly verbose!
Observe que, com o git 1.8.3, esse ramo upstream é exibido em azul (consulte " O que esse ramo está rastreando (se houver) no git? ")
Se você deseja uma saída limpa, consulte a resposta do arcresu - ele usa um comando de porcelana que não acredito que existia no momento em que escrevi essa resposta originalmente, por isso é um pouco mais conciso e funciona com ramificações configuradas para rebase, não apenas para mesclagem.
git remote show origin
Substitua 'origem' por qualquer que seja o nome do seu controle remoto.
fonte
git remote show
comando realmente se conecta ao repositório remoto ... e, portanto, não se acontecer de você estar off-line ou incapaz de se conectar à repo por qualquer motivo ...git remote show -n origin
para obter algumas informações, mesmo quando estiver offline. Na documentação do git remote : "Com a opção -n, os cabeçotes remotos não são consultados primeiro com git ls-remote <name>; as informações em cache são usadas."git remote show | xargs git remote show -n
para visualizar as informações de rastreamento combinadas de todos os controles remotos.Se você olhar para a página de manual
git-rev-parse
, verá a seguinte sintaxe descrita:Portanto, para encontrar a montante do ramo
master
, você faria:Para imprimir as informações de cada filial, você pode fazer algo como:
Isso é mais limpo do que analisar refs e config manualmente.
fonte
done < <(git for-each-ref --format='%(refname:short)' refs/heads/**)
Observe os dois asteriscos no final do padrão glob.git rev-parse --abbrev-ref HEAD@{upstream}
parece funcionar bem para o ramo atual. Também cria um bom alias para o git.while
sintaxe do loop parece um pouco estranha para mim. Você pode usar apenas ogit for-each-ref ... | while read branch; do ...
que não precisa de um FIFO e é executado na mesma ordem que os comandos escritos.git for-each-ref --format='%(refname:short) tracks %(upstream:short)' refs/heads/*
Uma alternativa à resposta do kubi é dar uma olhada no
.git/config
arquivo que mostra a configuração do repositório local:cat .git/config
fonte
git config --get-regex branch
mostrará uma linha para cada filial local. Um ramo de rastreamento será semelhante a:
Um sem rastreamento será parecido com:
fonte
git branch -vv
. Jgit config --global alias.track 'for-each-ref --format='\''%(refname:short) <- %(upstream:short)'\'' refs/heads'
Para a ramificação atual , aqui estão duas boas opções:
ou
Essa resposta também está aqui , para uma pergunta um pouco diferente que foi (erroneamente) marcada como duplicada.
fonte
git for-each-ref --shell --format='%(refname:short) %(upstream:short)' refs/heads
.Para a ramificação atual, você também pode dizer
git checkout
(sem ramificação). Este é um no-op com efeitos colaterais para mostrar as informações de rastreamento, se existir, do ramo atual.fonte
git checkout .
, o que não é um não-op.Eu uso esse apelido
então
fonte
Com base na resposta de Olivier Refalo
Mostra apenas local com a faixa configurada.
Escreva em um script chamado git-track no seu caminho e você receberá um comando git track
Uma versão mais elaborada em https://github.com/albfan/git-showupstream
fonte
git config --get-regexp "branch\.$current_branch\.remote"
lhe dará o nome do controle remoto que está sendo rastreado
git config --get-regexp "branch\.$current_branch\.merge"
fornecerá o nome da ramificação remota que está sendo rastreada.
Você precisará substituir $ current_branch pelo nome da sua filial atual. Você pode conseguir isso dinamicamente com
git rev-parse --abbrev-ref HEAD
O mini-script a seguir combina essas coisas. Cole-o em um arquivo chamado
git-tracking
, torne-o executável e verifique se ele está no seu caminho.então você pode dizer
observe que o nome da filial remota pode ser diferente do nome da filial local (embora geralmente não seja). Por exemplo:
como você pode ver no código, a chave para isso é extrair os dados da configuração do git. Eu apenas uso sed para limpar os dados estranhos.
fonte
Aqui está um puro e simples. Pode verificar
git remote -v
, que mostra toda a origem e a montante da ramificação atual.fonte