Eu criei uma ramificação para teste no meu repositório local ( test-branch
) para o qual eu enviei Github
.
Se eu for para minha Github
conta e selecionar esta opção test-branch
, serão exibidas as informações:
This branch is 1 commit ahead and 2 commits behind master
Minhas perguntas são:
- Como posso exibir essas informações localmente (por exemplo: um comando que mostra isso no terminal, em vez de precisar abrir
Github
para vê-lo)? Eu sei que posso ver as diferenças entre os ramos usando:
git diff master..test-branch
ou usando
Meld
(o que eu prefiro):git difftool master..test-branch
mas eu queria saber se há uma maneira de ver os commits de frente e de trás separadamente. IE: existe uma maneira de mostrar que 1 comprometo-me à frente por si só e depois esses 2 comprometem- se por si mesmos?
git for-each-ref --format="%(push:track)" refs/heads
. Veja minha resposta abaixoRespostas:
Aqui está um truque que encontrei para comparar dois ramos e mostrar quantos commits cada ramo está à frente do outro (uma resposta mais geral na sua pergunta 1):
Para filiais locais :
git rev-list --left-right --count master...test-branch
Para filiais remotas :
git rev-list --left-right --count origin/master...origin/test-branch
Isso fornece resultados como os seguintes:
1 7
Esta saída significa: "Comparado a
master
,test-branch
é 7 confirmados à frente e 1 confirmados atrás."Você também pode comparar filiais locais com filiais remotas, por exemplo,
origin/master...master
para descobrir quantas confirmações amaster
filial local está à frente / atrás de sua contraparte remota.fonte
git rev-list --left-right --count origin/master...@
) - desde que o usuário o façagit fetch
antes; útil para impedir solicitações de recebimento de ramificações desatualizadas.git rev-list --left-right --count origin/master...@ | cut -f1
--left-only
ou--right-only
Antes de tudo, para ver quantas revisões você está atrasando localmente, faça um
git fetch
para garantir que você tenha as informações mais recentes do seu controle remoto.A saída padrão de
git status
informa quantas revisões você está à frente ou atrás, mas geralmente acho isso muito detalhado:Eu prefiro
git status -sb
:Na verdade, eu alias isso simplesmente
git s
, e este é o comando principal que eu uso para verificar o status.Para ver a diferença nas "revisões futuras" de
master
, posso excluir as "revisões posteriores" deorigin/master
:Para ver a diferença nas "revisões posteriores" de
origin/master
, posso excluir as "revisões futuras" demaster
:Se houver cinco revisões à frente ou atrás, pode ser mais fácil escrever assim:
ATUALIZAR
Para ver as revisões anteriores / posteriores, a ramificação deve ser configurada para rastrear outra ramificação. Para mim, esse é o comportamento padrão quando clono um repositório remoto e depois de enviar uma ramificação com
git push -u remotename branchname
. Minha versão é 1.8.4.3, mas está funcionando assim desde que me lembro.A partir da versão 1.8, você pode definir o ramo de rastreamento assim:
A partir da versão 1.7, a sintaxe era diferente:
fonte
git
você está usando? Não consigo reproduzir o que você recebegit status
nem com nemgit status -sb
. Se eu tentar um dos comandos (depois de fazergit fetch
), não recebo nenhuma informação sobre confirmações à frente / atrás.master
eorigin/master
e quero ver essas diffs paramaster
e de um outro ramotest-branch
. Você poderia reformatar sua resposta para resolver esse problema?Com o Git 2.5+, agora você tem outra opção para visualizar antecipadamente / atrasar todas as ramificações configuradas para enviar para uma ramificação.
Veja mais em " Visualizando confirmações não empurradas do Git "
fonte
refs/heads
com o nome da ramificação atual ( stackoverflow.com/a/12142066/6309 ):refs/heads/$(git rev-parse --abbrev-ref HEAD)
Você também pode usar
awk
para torná-lo um pouco mais bonito:Você pode até criar um alias que sempre busca a origem primeiro e depois compara as ramificações
fonte
Depois de fazer uma busca git, você pode executar o status git para mostrar quantas confirmações a filial local está à frente ou atrás da versão remota da filial.
Isso não mostra quantos commits estão à frente ou atrás de uma ramificação diferente. Suas opções são o diff completo, olhando para o github ou usando uma solução como a Vimhsa vinculada acima: Status do Git em todos os repositórios
fonte