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.
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.
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.
git log
O resultado desse log será:
git log commit 27e31d9eb9a2f891d6b9ed1d432b06ee65a2902c Author: André RodriguesDate: 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.
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á:
git log commit 500fcf9ff7af97e8883f0181a1a3634e6e125b7d Author: André RodriguesDate: 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.
git log --oneline
O retorno desse log seria:
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.
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á:
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.
git log --oneline --all
O resultado desse log será:
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.
git log --oneline --all --decorate
O resultado desse log será:
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.
echo G > g.txt
git add .
git commit -m "Adicionado arquivo g.txt"
git log --oneline --all --decorate --graph
O resultado desse log será:
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.