Estou brincando com o Git isoladamente em minha própria máquina e acho difícil manter um modelo mental de todas as minhas ramificações e confirmações. Sei que posso fazer um git log
para ver o histórico de consolidação de onde estou, mas existe uma maneira de ver toda a topografia do ramo, algo como esses mapas ASCII que parecem ser usados em todos os lugares para explicar ramos?
.-A---M---N---O---P
/ / / / /
I B C D E
\ / / / /
`-------------'
Parece que alguém chegando e tentando pegar meu repositório teria dificuldade em descobrir exatamente o que estava acontecendo.
Acho que sou influenciado pelo navegador de stream do AccuRev ...
Respostas:
Use
git log --graph
ougitk
. (Ambos também aceitam--all
, o que mostrará todas as ramificações em vez da atual).Para nomes de ramificações e uma visão compacta, tente:
fonte
--all
opção e também rotula os commits. Eu também nunca vi no menu suspenso que você pode selecionar todos os ramos lá.git log --graph --decorate --oneline
- mostra um commit por linha e decora com nomes de ramificações.--all
opção. Bastante útil!--simplify-by-decoration
opção.Eu costumo usar
Com cores (se o seu shell for Bash):
Isso imprimirá uma representação baseada em texto como esta:
(Você pode simplesmente usar
git log --format=oneline
, mas isso vinculará as mensagens de confirmação aos números, o que parece menos bonito no IMHO).Para criar um atalho para esse comando, convém editar seu
~/.gitconfig
arquivo:No entanto, como Sodel the Vociferous observa nos comentários, esse comando de formatação longo é difícil de memorizar. Normalmente, não é um problema, pois você pode colocá-lo no
~/.gitconfig
arquivo. No entanto, se você às vezes precisar fazer login em uma máquina remota em que não possa modificar o arquivo de configuração, poderá usar uma versão mais simples, mas mais rápida, para digitar:fonte
--full-history
é relevante apenas ao usar--simplify-by-decoration
ou especificar um caminho de arquivo.Eu tenho 3 aliases (e 4 aliases-aliases para uso rápido) que normalmente uso no meu
~/.gitconfig
arquivo:git lg
/git lg1
fica assim:git lg2
se parece com isso:e
git lg3
fica assim:Note-se que isso não pretende ser uma solução completa - é um modelo para você alterar, adicionar e corrigir conforme seu gosto. Se você quiser usá-los, minha recomendação é:
.gitconfig
,.gitconfig
s no futuro (ou, como alternativa, controlar seus arquivos de ponto, é claro) .Nota: A resposta copiou e melhorou a resposta em stackoverflow.com/questions/1057564/pretty-git-branch-graphs, pois é muito mais apropriado aqui do que ali. Deixou a cópia na outra pergunta por razões históricas - ela está fechada agora e a resposta é mencionada por várias outras respostas.
fonte
%C(bold yellow)
por%C(auto)
por ter cores diferentes paraHEAD
, ramificações locais e remotas ( ref ).%w()
; Dessa forma, você também pode agrupar corretamente as mensagens mais longas ou de confirmação de várias linhas sem atrapalhar o gráfico.--abbrev-commit
está lá porque as segundas e terceiras linhas são recuadas à mão com espaços, e eu queria ter certeza absoluta de que usaria o SHA curto - melhor prevenir do que remediar.--decorate
também está lá porque, embora os padrões do Git façam a mesma coisa, isso pode ser configurado de maneira diferente ou diferente em diferentes versões do Git - para elas, eu quero absolutamente decoração. Por fim, sinalizadores extras / redundantes não são ruins aqui - isso ocorre em um arquivo; não é algo que você digita o tempo todo.lg1
&lg2
screenshots que você pode ver(origin/test_on_10.8)
mostrando a ramificação remota e nalg2
captura de tela você pode veja(HEAD -> master, origin/master, origin/HEAD)
mostrando as posições local e remota damaster
filial eHEAD
. Isso corresponde às ferramentas GUI de visualização de ramificações populares do Git do (gitk, SourceTree, TortoiseGit, Tower, Fork, GitX), embora com um pouco mais de detalhamento (algumas ferramentas da GUI usam código de cores) .Em qualquer uma dessas receitas (com base no git log ou no gitk), você pode adicionar
--simplify-by-decoration
para recolher as partes lineares desinteressantes da história. Isso torna muito mais visível a topologia de uma só vez. Agora posso entender grandes histórias que seriam incompreensíveis sem essa opção!Senti a necessidade de postar isso, porque não parece ser tão conhecido quanto deveria ser. Ele não aparece na maioria das perguntas sobre o Stack Overflow sobre a visualização da história e demorei bastante para encontrar - mesmo depois que eu sabia que queria! Eu finalmente o encontrei neste relatório de bug do Debian . A primeira menção no Stack Overflow parece ser esta resposta de Antoine Pelisse.
fonte
--simplify-by-decoration
deixa tão claro o que está acontecendo.git log --graph --all --simplify-by-decoration
funciona também.--simplify-by-decoration
ao adicionar n confirmações antes / depois de cada confirmação deocratizada (como-B
e-A
porgrep
).Gitk
algum dia doloroso para eu ler.Motive-me a escrever GitVersionTree .
fonte
99,999% do meu tempo está olhando para o histórico
git lg
e 0,001% é paragit log
.Eu só quero compartilhar dois aliases de log que podem ser úteis (configure em .gitconfig):
git lg
verá o histórico atual da ramificação.git hist
verá todo o histórico do ramo.fonte
Dê uma olhada no Gitkraken - uma GUI de plataforma cruzada que mostra a topologia de uma maneira lúcida.
Aqui está um rápido tutorial em vídeo sobre alguns recursos avançados.
fonte
Eu gosto de, com
git log
, fazer:(também com --all, para visualizar ramificações remotas)
Funciona com versões recentes do Git: introduzidas desde 1.6.3 ( quinta-feira, 7 de maio de 2009 )
Você também pode limitar o alcance da exibição do log (número de confirmações):
(mostrar apenas os últimos 5 envios)
O que eu não gosto na solução selecionada atualmente é:
Ele exibiu muitas informações (quando eu quero apenas ver um resumo rápido):
gitk
é ótimo, mas me obriga a deixar a sessão do shell para outra janela, enquanto exibir o último n commit rapidamente é suficiente.fonte
O Gitg é uma ótima ferramenta para Linux, semelhante ao Gitx para OS X. Basta executar 'gitg' na linha de comando de algum lugar dentro da estrutura em árvore do seu repositório (o mesmo com o gitx).
fonte
gitg --all
, se quiser evitar mexer no menu suspenso.Achei "git-big-picture" bastante útil: https://github.com/esc/git-big-picture
Ele cria belos gráficos 2D usando dot / graphviz em vez das visualizações "unidimensionais" bastante lineares que o gitk e os amigos produzem. Com a opção -i, ele mostra os pontos de ramificação e as confirmações de mesclagem, mas deixa de fora tudo no meio.
fonte
Uma boa ferramenta baseada na Web não é pertinente . É executado em qualquer plataforma compatível com o node.js & git. Há um vídeo de como funciona para aqueles que acham esse tipo de coisa mais fácil do que ler ...
fonte
Dê uma olhada no BranchMaster .
Eu escrevi para visualizar uma estrutura complexa de ramificação, recolhendo todos os commits entre eles em uma única linha. Os números indicam o número de confirmações.
fonte
Ninguém mencionou
tig
? Não dobra ramificações como "BranchMaster", mas ...É rápido, roda no terminal.
Por ser tão rápido (+ controle do teclado) que você obtém um ótimo UX, é quase como o meu "
ls
" para diretórios que contêm repositórios git.https://jonas.github.io/tig/
Possui os atalhos usuais,
/
para pesquisar etc.(ps. é o terminal no fundo desta captura de tela, parece melhor hoje em dia, mas meu computador se recusa a tirar uma captura de tela, desculpe)
(pps. Eu uso o gitkraken também e tem visualizações muito claras, mas é muito mais pesado que
tig
)fonte
O Tortoise Git possui uma ferramenta chamada "Gráfico de Revisão". Se você estiver no Windows, é tão fácil quanto clicar com o botão direito do mouse em seu repositório -> Tortoise Git -> Gráfico de revisão.
fonte
O riso desenha gráficos realmente agradáveis.
fonte
Eu uso os seguintes aliases.
Ele tem mais informações no esquema de cores do que os apelidos que eu vi acima. Também parece ser bastante comum; portanto, é possível que exista no ambiente de outras pessoas ou seja possível mencioná-lo na conversa sem precisar explicá-lo.
Com capturas de tela e uma descrição completa aqui: http://blog.kfish.org/2010/04/git-lola.html
fonte
Para usuários de Mac, faça o checkout (sem trocadilhos) da ferramenta gratuita de código aberto GitUp: http://gitup.co/
Eu gosto da maneira como os gráficos são exibidos, é mais claro do que algumas das outras ferramentas que eu já vi.
O projeto está aqui: https://github.com/git-up/GitUp
fonte
Eu tenho esse
git log
alias~/.gitconfig
para visualizar o histórico do gráfico:Com o alias no lugar,
git l
mostrará algo como isto:No Git 2.12 +, você pode personalizar as cores das linhas do gráfico usando a
log.graphColors
opção de configuração.Quanto ao formato dos logs, é semelhante a
--oneline
, com a adição do nome do autor (respeitando.mailmap
) e a data relativa do autor . Observe que a%C(auto)
sintaxe, que diz ao Git para usar as cores padrão para o hash de confirmação, etc., é suportada no Git> = 1.8.3 .fonte
Encontrei este post do blog que mostra uma maneira concisa:
Normalmente, crio um alias para o comando acima:
e simples, basta usar
gl
.Você também pode adicionar o alias à configuração do git. Abra
~/.gitconfig
e adicione a seguinte linha ao [alias]e use-o assim:
git lg
fonte
Meu alias favorito pessoal, via .gitconfig, é:
fonte
Para aqueles que usam o editor de texto VSCode , considere a extensão de histórico do Git de D. Jayamanne:
fonte
O Gitx também é uma ferramenta de visualização fantástica se você estiver no OS X.
fonte
Outro comando git log. Este com colunas de largura fixa :
fonte
Confira
SmartGit
. Isso me lembra muito a visualização do ramo TortoiseHg e é gratuito para uso não comercial.fonte
No Windows, existe uma ferramenta muito útil que você pode usar: extensões git. É uma ferramenta de interface gráfica e facilita muito as operações do git.
Também é de código aberto.
http://gitextensions.github.io
fonte
Eu tentei,
--simplify-by-decoration
mas todas as minhas mesclagens não são mostradas. Em vez disso, apenas removo as linhas sem os símbolos "\" e "/" nos cabeçalhos, mantendo sempre as linhas com "(" indicando ramos imediatamente depois disso. Ao mostrar o histórico dos ramos, em geral não estou interessado em enviar comentários, portanto Também os removo e termino com o seguinte alias de shell.fonte
podemos torná-lo mais complicado?
Como sobre o simples git log --all --decorate --oneline --graph (lembre-se de A Dog = --All --Decorate --Oneline --Graph)
fonte
O site oficial do Git alistou algumas ferramentas GUI específicas da plataforma de terceiros. Clique aqui git GUI Tools for Linux Platform
Eu tenho usado
gitg
eGitKraken
para plataforma linux. Tanto é bom entender a árvore de confirmaçãofonte