Como ler o gráfico de log do git

92

No livro da comunidade git, diz

Outra coisa interessante que você pode fazer é visualizar o gráfico de commit com a opção '--graph', assim:

$ git log --pretty=format:'%h : %s' --graph
* 2d3acf9 : ignore errors from SIGCHLD on trap
*   5e3ee11 : Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 : Added a method for getting the current branch.
* | 30e367c : timeout code and tests
* | 5a09431 : add timeout protection to grit
* | e1193f8 : support for heads with slashes in them
|/
* d6016bc : require time for xmlschema

Isso dará uma representação ASCII muito boa das linhas do histórico de commits.

Como devo ler este gráfico? Como 420eac9difere do resto?

Michael
fonte

Respostas:

116

Os asteriscos mostram onde algo foi cometido:

e1193f8, 5a09431e 30e367cforam comprometidos com o ramo esquerdo (gerando a |no ramo direito), enquanto que 420eac9foram comprometidos com o ramo direito (gerando a |no ramo esquerdo). E isso é o 420eac9que difere do resto: é o único commit para o branch certo.

Para fins de integridade:

  • d6016bc foi o ponto de ramificação
  • 5e3ee11 é o commit de fusão
  • 2d3acf9 é o primeiro commit após a fusão
eckes
fonte
4
Tive uma dúvida sobre os tempos de confirmação, conforme mostrado no gráfico. No gráfico, '420eac9' é mostrado acima de '30e367c', '5a09431' e 'e1193f8'. Isso sempre significaria que '420eac9' foi confirmado após os outros três, ou é que os commits em um branch são agrupados e a ordem em que aparecem nos branches não tem uma correlação de tempo?
Parag
4
@Parag: os commits em um branch são agrupados. 420eac9foi feito após o primeiro commit do e1193f8branch, mas não necessariamente após30e367c
eckes
1
@eckes, então os |símbolos à esquerda (mais à esquerda) são uma representação do branch em que estou atualmente?
J86
@ J86 se você alternar para outro branch e executar o mesmo comando, obterá a mesma saída, então não há referência no gráfico para o branch atual em que você está
onofricamila
19

420eac9está em um branch diferente dos 3 commits "abaixo" dele. As filiais divergiram depois d6016bce foram fundidas 5e3ee11.

Ilkka
fonte
4
Talvez uma redação melhor do que os ramos divergentes é que um segundo ramo foi criado d6016bce desenvolvido em paralelo com o ramo original.
Ilkka,