Isso significa que você pode rastrear todas as filiais remotas no fantoche, embora você tenha algumas filiais locais. Quais são os muitos sinais "rastreados" significa que você vê o resultado do comando? "rastreado" por qual filial local?
PJ.
As ramificações remotas são rastreadas porque, se você fizer uma git fetchou git pullatualizações das ramificações remotas, serão rastreadas no seu repositório clonado. As ramificações locais são exatamente isso, ramificações locais das ramificações remotas e, portanto, as atualizações nas ramificações remotas serão rastreadas e mescladas quando o comando apropriado para isso é fornecido. Incluí explicitamente a opção '-t' ao criar a ramificação local para garantir que ela rastreie a ramificação da qual se originou. Lembre-se de que uma ramificação local também pode rastrear outra ramificação local, portanto, não precisa ser uma ramificação remota.
precisa saber é o seguinte
5
@PJ: O termo "faixa" tem dois significados distintos no Git. As linhas "rastreadas" git remote show remote-namereferem-se a "rastreamento de ramificações" (capturas instantâneas de ramificações de repositórios remotos). As linhas "mesclam com" referem-se a ramificações locais que possuem uma configuração de "ramificação upstream" (feita com a opção --track/ -tdo ramo git ou check - out git e, portanto, frequentemente confundida com "ramos de rastreamento").
31810 Chris Johnsen
" ramificação de rastreamento remoto " é a entrada atualizada do glossário para "ramificações de rastreamento" mencionadas acima. O documento foi atualizado em 8b3f3f84 .
ento 12/09/2013
124
Para todos os ramos:
git branch -avv
Apenas para filiais locais:
git branch -lvv
Apenas para filiais remotas:
git branch -rvv
mostra todos os ramos, bem como o nome do ramo upstream.
Se você planeja usar as informações em um contexto automatizado (por exemplo, um script), use o nível inferior (“encanamento”) git for-each-ref.
% git remote show origin
* remote origin
⋮
Local branches configured for 'git pull':
master merges with remote master
pu merges with remote pu
⋮
% git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads
master <- origin/master
pu <- origin/pu
O git for-each-refaprendeu o %(upstream)token no Git 1.6.3 . Nas versões anteriores do Git, você terá que extrair as informações de rastreamento com git config branch.<name>.remotee git config branch.<name>.merge(provavelmente usando git for-each-refpara criar os comandos para cada nome de filial local).
Sua saída respostas é muito mais sucinto e mais fácil de seguir, de modo a obter o voto up :)
CubanX
Para torná-lo menos sucinta, mas fornecem uma boa maneira de verificar visualmente que os nomes remotos são os mesmos que os nomes filial local, uma pegadinha git comum: em bashgit for-each-ref --format=$'\n'' '' '' '' '' '' ''/%(refname:short);%(upstream:short)' refs/heads | tr ';' $'\n'
placa
19
Para um ramo específico, você pode usar git rev-parsecom o sufixo @{u}ou @{upstream}no nome do ramo, por exemplo:
+1 Sua resposta me deu exatamente o que eu precisava: git rev-parse --symbolic-full-name HEADvs. git rev-parse --symbolic-full-name HEAD@{u}, obrigado!
Tino
10
Eu uso o seguinte script de shell (nomeado git-tracks) para mostrar a ramificação remota que é rastreada pela ramificação atual:
Você pode considerar usar "set -e" na parte superior do script. Isso permitirá que você remova todas as instâncias de "|| exit $?" mantendo o mesmo comportamento de falha antecipada.
John Whitley
@ JohnWhitley: Obrigado, eu editei minha resposta. Eu sei set -e, mas geralmente me ater à verificação explícita. Mas neste caso, é realmente melhor.
Ingo Karkat
Não está trabalhando para mim git version 1.9.4. Echos nothing :(
Ain
8
.git/config O arquivo também fornecerá as informações da filial de rastreamento como
Eu precisava encontrar o ramo remoto correspondente (se houver) para cada ramo local em um loop que estava atuando em uma lista dos ramos locais. Acabei usando o seguinte:
git for-each-ref --format='%(refname:short):%(upstream:short)' refs/heads | grep "^LocalBranchName:.*/" | sed "s/^LocalBranchName://"
Isso não produzirá nada (uma sequência vazia) para ramificações locais que não possuem uma ramificação remota correspondente ("someremote / somebranch").
Respostas:
Usando o exemplo da minha cópia do Puppet extraída do repositório Git upstream no Github.com ...
Então, se eu fosse executar o seguinte:
E, finalmente, execute
git remote show origin
novamente o comando novamente. Verei o seguinte na parte inferior:fonte
git fetch
ougit pull
atualizações das ramificações remotas, serão rastreadas no seu repositório clonado. As ramificações locais são exatamente isso, ramificações locais das ramificações remotas e, portanto, as atualizações nas ramificações remotas serão rastreadas e mescladas quando o comando apropriado para isso é fornecido. Incluí explicitamente a opção '-t' ao criar a ramificação local para garantir que ela rastreie a ramificação da qual se originou. Lembre-se de que uma ramificação local também pode rastrear outra ramificação local, portanto, não precisa ser uma ramificação remota.git remote show remote-name
referem-se a "rastreamento de ramificações" (capturas instantâneas de ramificações de repositórios remotos). As linhas "mesclam com" referem-se a ramificações locais que possuem uma configuração de "ramificação upstream" (feita com a opção--track
/-t
do ramo git ou check - out git e, portanto, frequentemente confundida com "ramos de rastreamento").Para todos os ramos:
Apenas para filiais locais:
Apenas para filiais remotas:
mostra todos os ramos, bem como o nome do ramo upstream.
fonte
git branch -lvv
mostra apenas ramos locais com a montante pode ser útilgit branch -vv
funciona para mim ...Jeremy Bouse ilustra como
git remote show
exibe informações de rastreamento . Isso deve ser suficiente se você deseja apenas as informações para consumo humano.Se você planeja usar as informações em um contexto automatizado (por exemplo, um script), use o nível inferior (“encanamento”)
git for-each-ref
.O
git for-each-ref
aprendeu o%(upstream)
token no Git 1.6.3 . Nas versões anteriores do Git, você terá que extrair as informações de rastreamento comgit config branch.<name>.remote
egit config branch.<name>.merge
(provavelmente usandogit for-each-ref
para criar os comandos para cada nome de filial local).fonte
git for-each-ref --format=$'\n'' '' '' '' '' '' ''/%(refname:short);%(upstream:short)' refs/heads | tr ';' $'\n'
Para um ramo específico, você pode usar
git rev-parse
com o sufixo@{u}
ou@{upstream}
no nome do ramo, por exemplo:... ou para o formulário abreviado, adicione
--abbrev-ref
Geralmente, você pode usar a
branch@{upstream}
sintaxe sempre que uma confirmação for esperada.fonte
git rev-parse --symbolic-full-name HEAD
vs.git rev-parse --symbolic-full-name HEAD@{u}
, obrigado!Eu uso o seguinte script de shell (nomeado
git-tracks
) para mostrar a ramificação remota que é rastreada pela ramificação atual:Isso também poderia usar o mencionado
git for-each-ref
, mas achei o acesso direto um pouco mais simples do que filtrar a saída do ramo atual.fonte
set -e
, mas geralmente me ater à verificação explícita. Mas neste caso, é realmente melhor.git version 1.9.4
. Echos nothing :(.git/config
O arquivo também fornecerá as informações da filial de rastreamento comofonte
mostra exatamente o que você pede. Ele mostra as ramificações locais juntamente com a ramificação remota correspondente que eles estão rastreando.
fonte
Adicione estas runas à
[alias]
seção do seu arquivo .gitconfig:fonte
Eu precisava encontrar o ramo remoto correspondente (se houver) para cada ramo local em um loop que estava atuando em uma lista dos ramos locais. Acabei usando o seguinte:
Isso não produzirá nada (uma sequência vazia) para ramificações locais que não possuem uma ramificação remota correspondente ("someremote / somebranch").
fonte
Tente
git branch
com as opções :Caso contrário, examine o seu
.git/config
.fonte