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.
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
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
atualização recente .Respostas:
Experimente a opção de decoração.
Anota confirmações apontadas por tags ou ramificações.
fonte
--pretty
você pode usar%d
onde quiser as 'decorações'.git log --graph --all --oneline --decorate
. Eu tenho um apelidogit graph
que usa--pretty
(para mostrar também outras coisas, como autor e data), mas%d
não me dá as cores de--decorate
. Eu uso amarelo para todos os meus árbitros por enquanto, você sabe como eu posso deixar--pretty
a%d
string herdar as cores--decorate
?--pretty
formatos, adicione%C(auto)
antes do elemento o que deve ser colorido. por exemplogit log --pretty=format:"%cd %h %cn %s %C(auto)%d"
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
blackbox
criptografia, em que um repositório e seus ramos / tags podem ficar indisponíveis para a atualidadeadmins
quando um número suficiente de usuários deixa um projeto e okeyrings
diretório não se baseia religiosamente no mestre)Descobri que a resposta abaixo foi útil quando o
keyrings
diretório não foi atualizado do mestre ...Basicamente, adicionar
--source
era o que eu precisava para mostrar os ramos / tags. A adição--name-only
também mostrará qual arquivo foi realmente alterado.Outra resposta útil: Como mostrar o log do git com o nome da ramificação
fonte
--source
só dáHEAD
para 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 fizmaster
, em vez de obterrefs/heads/master
, recebo um ramo privado (refs/remotes/origin/…
). Suspeito que fusões e / ou novas ramificações façamGit
perder informações do histórico.--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.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 --decorate
comando, que está disponível como oglgga
alias no oh-my-zsh.Pessoalmente, prefiro o
glods
alias que se traduz em:fonte