Como posso mostrar o nome das ramificações no `git log`?

216

Como posso mostrar o nome das ramificações na saída de git log?

Por exemplo, git log --graph --alleu recebo uma boa visão geral dos commits, mas fico confuso sobre qual linha é master e qual é minha ramificação, por exemplo.

vdboor
fonte
1
Comodamente, a exibição dos nomes de cabeçotes ou tags vinculados parece já estar concluída por padrão desde alguma gitatualização recente .
Underscore_d

Respostas:

321

Experimente a opção de decoração.

git log --graph --all --decorate

Anota confirmações apontadas por tags ou ramificações.

CB Bailey
fonte
42
Com --prettyvocê pode usar %donde quiser as 'decorações'.
CB Bailey
4
@oli: O que você espera que ele mostre? Nem todos os commits são dicas de ramificação.
CB Bailey
9
O @noli git armazena apenas o nome do ramo no commit mais recente do ramo (a dica). Todas as confirmações na história são iguais e anônimas. Se você deseja ramificações nomeadas para que cada confirmação carregue o nome da ramificação, você pode usar o Mercurial.
Sampo Smolander
7
@CharlesBailey: Gosto das cores dos árbitros git log --graph --all --oneline --decorate. Eu tenho um apelido git graphque usa --pretty(para mostrar também outras coisas, como autor e data), mas %dnão me dá as cores de --decorate. Eu uso amarelo para todos os meus árbitros por enquanto, você sabe como eu posso deixar --prettya %dstring herdar as cores --decorate?
Gauthier
3
@ Gauthier Se você deseja ter cores padrão em seus --prettyformatos, adicione %C(auto)antes do elemento o que deve ser colorido. por exemplogit log --pretty=format:"%cd %h %cn %s %C(auto)%d"
Radon8472
7

Eu estava procurando por algo semelhante a isso - mas queria saber em que ramo uma alteração foi feita. Esperamos que esta resposta seja útil para outros também.

Estou investigando um risco com blackboxcriptografia, em que um repositório e seus ramos / tags podem ficar indisponíveis para a atualidade adminsquando um número suficiente de usuários deixa um projeto e o keyringsdiretório não se baseia religiosamente no mestre)

Descobri que a resposta abaixo foi útil quando o keyringsdiretório não foi atualizado do mestre ...

Basicamente, adicionar --sourceera o que eu precisava para mostrar os ramos / tags. A adição --name-onlytambém mostrará qual arquivo foi realmente alterado.

cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings

Outra resposta útil: Como mostrar o log do git com o nome da ramificação

Controle Android
fonte
Para mim, --sourcesó dá HEADpara todos os commits. Em combinação com --all, isso parece distinguir entre diferentes ramos, mas as informações exibidas não são o que eu espero: para confirmações que fiz master, em vez de obter refs/heads/master, recebo um ramo privado ( refs/remotes/origin/…). Suspeito que fusões e / ou novas ramificações façam Gitperder informações do histórico.
vinc17
Em vez de --all, eu posso filtrar as ramificações com --branches --remotes=<pattern>, mas assim que duas ramificações são mescladas, o Git não tem mais as informações nas quais uma delas tinha o commit quando foi concluída.
vinc17
1

Se você estiver usando o oh-my-zsh como seu terminal, um monte de aliases do git estarão disponíveis. Tudo isso pode ser visto em seu repositório oh-my-zsh / plugins / git . Se você não usar este terminal, poderá apenas pegar os aliases e colar os que desejar no seu próprio ambiente.

A resposta aceita apresenta o git log --graph --all --decoratecomando, que está disponível como o glggaalias no oh-my-zsh.

Pessoalmente, prefiro o glodsalias que se traduz em:

git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short
Simon
fonte