Trabalhando com o git log usando os parâmetros --decorate, --graph, --all e --oneline.

Você já precisou ver o seu histórico de commits ou até mesmo onde cada merge foi feito, sua linha do tempo, quem fez cada commit e coisas do tipo? Então você precisa aprender a usar o git log.

Autor: André Rodrigues

3703

CONTEÚDO

Olá amigos, tudo bem?

Acho que não preciso falar o que é um log. No GIT você consegue ver todo o histórico do projeto pelo log, quem fez um commit, quando ele foi feito entre outras coisas.

Para começar, vamos preparar o repositório local.

Terminal
git init
echo A > a.txt
echo B > b.txt
git add .
git commit -m "Commit inical"

Pronto, nosso projeto tem seu primeiro commit e já é possível usar o git log.

Terminal
git log

O resultado desse log será:

Terminal
git log
commit 27e31d9eb9a2f891d6b9ed1d432b06ee65a2902c
Author: André Rodrigues 
Date:   Fri Sep 1 10:13:26 2017 -0300

    Commit inical

Como podemos ver, ele conta com hash do commit, autor com nome e e-mail (O nome e e-mail cadastrado na hora de configurar seu GIT), hora do commit e a mensagem. Vamos tornar o log maior fazendo alguns commits e executando o git log novamente.

Terminal
echo C > c.txt
git add .
git commit -m "Adicionado arquivo c.txt"
echo D > d.txt
git add .
git commit -m "Adicionado arquivo d.txt"
echo E > e.txt
git add .
git commit -m "Adicionado arquivo e.txt"
git log

Perfeito, agora temos 4 commits e o retorno do log será:

Terminal
git log
commit 500fcf9ff7af97e8883f0181a1a3634e6e125b7d
Author: André Rodrigues 
Date:   Fri Sep 1 10:16:36 2017 -0300

    Adicionado arquivo e.txt

commit 8743a5334e47ff63d56341d41d3e4eebcf7142e2
Author: André Rodrigues 
Date:   Fri Sep 1 10:16:36 2017 -0300

    Adicionado arquivo d.txt

commit c6118c50448e95d2a8a8660b38c8a593833a523b
Author: André Rodrigues 
Date:   Fri Sep 1 10:16:36 2017 -0300

    Adicionado arquivo c.txt

commit 27e31d9eb9a2f891d6b9ed1d432b06ee65a2902c
Author: André Rodrigues 
Date:   Fri Sep 1 10:13:26 2017 -0300

    Commit inical

Como você pode ver, o log começa a ficar muito grande e difícil de ser lido, para resolver esse problema você pode usar o --oneline (eu sempre escrevo online =/) que transformará cada commit em apenas 1 linha.

Terminal
git log --oneline

O retorno desse log seria:

Terminal
git log --oneline
500fcf9 Adicionado arquivo e.txt
8743a53 Adicionado arquivo d.txt
c6118c5 Adicionado arquivo c.txt
27e31d9 Commit inical

Como você pode ver, o log ficou bem mais resumido, apenas as inicias do commit e a descrição. Agora imagina que estamos trabalhando com algum Branch, para isso vou criar um Branch teste, comitar algo nele, voltar para o master e executar o git log --oneline.

Terminal
git checkout -b teste
echo F > f.txt
git add .
git commit -m "Adicionado arquivo f.txt"
git checkout master
git log --oneline

O resultado desse log será:

Terminal
git log --oneline
500fcf9 Adicionado arquivo e.txt
8743a53 Adicionado arquivo d.txt
c6118c5 Adicionado arquivo c.txt
27e31d9 Commit inical

Você viu que ele está idêntico ao log anterior? Pois é! Ele ignorou o commit que acabamos de fazer adicionando o arquivo f.txt porque ele não existe no master. Para resolver esse problema podemos executar o git log --oneline --all.

Terminal
git log --oneline --all

O resultado desse log será:

Terminal
git log --oneline --all
88273ec Adicionado arquivo f.txt
500fcf9 Adicionado arquivo e.txt
8743a53 Adicionado arquivo d.txt
c6118c5 Adicionado arquivo c.txt
27e31d9 Commit inical

O log está mostrando o resultado de todos os commit mesmo os que não estão no Branch atual, mas agora vem outro problema: o que está no meu Branch e o que está nos outros? Para isso podemos executar o git log --oneline --all --decorate.

Terminal
git log --oneline --all --decorate

O resultado desse log será:

Terminal
git log --oneline --all --decorate
88273ec (teste) Adicionado arquivo f.txt
500fcf9 (HEAD -> master) Adicionado arquivo e.txt
8743a53 Adicionado arquivo d.txt
c6118c5 Adicionado arquivo c.txt
27e31d9 Commit inical

Podemos ver que ele apontou o master para o commit 500fcf9 e o Branch teste para o commit '88273ec', mostrando ainda, onde está seu HEAD. Por fim, para facilitar a visualização das árvores de trabalho, vamos adicionar o arquivo g.txt, comitar e execute o git log --oneline --all --decorate --graph.

Terminal
echo G > g.txt
git add .
git commit -m "Adicionado arquivo g.txt"
git log --oneline --all --decorate --graph

O resultado desse log será:

Terminal
git log --oneline --all --decorate --graph
* 9b0a0b9 (HEAD -> master) Adicionado arquivo g.txt
| * 88273ec (teste) Adicionado arquivo f.txt
|/
* 500fcf9 Adicionado arquivo e.txt
* 8743a53 Adicionado arquivo d.txt
* c6118c5 Adicionado arquivo c.txt
* 27e31d9 Commit inical

Como podemos ver, o log retornou 2 árvores diferentes, uma do Branch teste indo para direita e ficando atrás da árvore do master que continua seu caminho.

IMPORTANTE

Todos comando aqui ensinados podem ser visto de forma gráfica por um cliente GIT, se você quiser testar algum, pode escolher uma opção e fazer o download direto no site do GIT clicando aqui.

Pronto pequeno Padawan! Agora você já sabe tudo o que acontece com seu repositório GIT de forma fácil e organizada. ;)

Quer aprender tudo sobre o GIT? Clique aqui e veja todos os artigos.

AGUARDE
CARREGANDO SITE