image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image

JR

Jorge Risco10/03/2024 15:31
Compartilhe

Comandos GIT: Desvendando o Histórico de Código para Eficiência Máxima com GIT LOG

  • #Git

Neste artigo você vai aprender a:

  • Compreender o funcionamento do comando git log;
  • Aprender como esse comando é teu aliado;
  • Segredos e macetes para maximizar sua eficiência, compilados de anos de prática como desenvolvedor;

E tudo isso de uma forma direto-ao-ponto, sem enrolações.

O que é o git log?

git log

Um comando simples que é capaz de lhe mostrar todo o histórico de commits realizados em seu projeto, como no print abaixo.

Ele aceita uma série de "parâmetros de configuração" (flags), que serão abordados nesse artigo de modo a que você possa ter uma leitura agradável e clara de seu histórico, melhorando sua eficiência como desenvolvedor.

image

  1. Abra seu terminal;
  2. Certifique-se que, dentro do terminal, você está na pasta de seu repositório git;
  3. Digite git log;

Ao digitar git log você deve ter reparado que o resultado está diferente do que mostrei na imagem, vou te ensinar a usar os parâmetros de configuração para obter um resultado facilmente legível também

Obs: para fechar o git log aperte q

Uma linha por commit!

git log --oneline

Adicione --oneline após o comando para que cada commit seja representado em uma só linha, evitando que a mensagem fique difícil de ler e muito carregada

Formato de gráfico!

git log --graph

De modo a visualizar várias branches e ter uma visualização gráfica mais agradável, utilize a flag --graph

Dê cor ao seu log!

git log --pretty=format:'%C(red)%h%C(reset) - %C(bold blue)%s%C(reset) %C(green)(%cr) %C(bold)%C(yellow)[%an]%C(reset)'

Adiciona cor ao seu histórico, como em minha imagem

Veja todas as branches (opcional)!

git log --all

Combinando parâmetros

A beleza disso tudo está no fato de que podemos combinar flags para obter o melhor resultado posível, é muito comum vermos desenvolvedores experientes rapidamente utilizar

git log --graph --oneline

para obter um gráfico do histórico em forma de fácil visualização com uma linha por commit.

Observe que combinei em um único comando duas flags anteriormente mostradas

git log --graph --oneline

* 706d95f48 (HEAD -> main, origin/main, origin/HEAD) Configure Dynamic Feature Flags for React Native (#28527)
* 71c4699de Upgrade flow to 0.230.0 (#28528)
* 4e2fe10fa Configure "Always On" Feature Flags for React Native (#28519)
* 338dddc08 Remove RTR from DebugTracing-test (#28411)
* c35b9b05f Fix ReactHooksInspection-test.js (#28520)
* 447fc27e3 fix[devtools/e2e]: fixed source inspection in e2e tests (#28518)
* 850fac491 Link to reactjs/react.dev repo instead of reactjs/reactjs.org  (#28493)
* 64f354cf2 Remove unused returnFiber (#28504)
* 0066e0b68 Devtools: Display actual pending state when inspecting `useTransition` (#28499)
* c11b196ae Move tail hydration mismatch back to hydration context (#28501)
* 966d17483 React DevTools 5.0.1 -> 5.0.2 (#28496)
* e5287287a feat[devtools]: symbolicate source for inspected element (#28471)
* 61bd00498 refactor[devtools]: lazily define source for fiber based on component stacks (#28351)
* aa4eae6b9 fix[devtools/tree/element]: onClick -> onMouseDown to handle first click correctly (#28486)
* 0ae2b1341 [Test] Update `flushSync` tests to use react-dom (#28490)
* 113ab9af0 [Flight][Fizz][Fiber] Chain HostDispatcher implementations (#28488)
* 1c02b9d2b [DOM] disable legacy mode behind flag (#28468)
* 034130c02 Fix Broken Links In Documentation (#28321)
* 1940cb27b Update /link URLs to react.dev (#28477)
* 30ae0baed [devtools][tests] add support for @gate pragma (#28479)
* 11828bf52 Remove loose-envify dep and browserify configs (#28480)
* 5f2c6b74d Update homepage URLs to react.dev (#28478)

adicionando o --all podemos ver outras branches,

git log --graph --oneline --all

* | 10dab495f Stop Unnecessary Purging of Node Cache
* | ee1335b6a Delete `setTextNodeValueAtIndexByParentID`
* | 8687645c5 Reduce Lookup for Missing Lifecycle Methods
* | 7b68fcd40 Short-circuit `updatePropertyByID`
* | 92dab0759 More autobind warnings and invariants
* | 5c6e59f53 Don't ignore children of non-ancestor ID nodes in findComponentRoot.
* | 067fe2769 Fix Clowny Validation Code
* | 8db2ba913 Upgrade other dependencies
* | 1500e9810 Upgrade browserify.
* |   a3b21b10e Merge pull request #178 from paulshen/master
|\ \   
| * | fa03e9842 Add __benchmarks__ to .gitignore
* | | 203dba271 Add some missing attributes
* | | 91562ba93 Sync JSX tags from upstream
* | | fc5f7e0e8 Add support for missing html elements
* | | a4123a069 Continue over ID-less children in ReactMount.findComponentRoot.
* | | a5ddb07cb Make ReactMount.findComponentRoot breadth-first & non-recursive.
* | | 917e101c2 Try harder to find container in ReactMount.findReactContainerForID.
* | | 5c624021e Tweaks to make the Closure parser happy
* | | 5676a486c Allow nested ReactUpdates
* | | 1658feade Remove the check for console.warn
* | |   5f1eceb1e Merge pull request #176 from andreypopp/master
|\ \ \   
| * | | fc3491e0d dateTime attr: camelCase and MUST_USE_ATTRIBUTE
| * | | 9f9424499 add datetime to the list of known attributes
|/ / /   
* | |   6ebdd0cfd Merge pull request #173 from chenglou/patch-4

Note que agora fica mais claro o gráfico no terminal, pois estamos vendo todas as branches, onde cada asterisco é um commit e as outras branches podem ser também visualizadas.

Vantagem secreta do git log

Note que ao lado de cada commit temos uma espécie de "código" contendo números e letras, como "fc5f7e0e8", um identificador único para cada commit (pense como se fosse o RG do commit), o que é muito útil em um cenário profissional, para apontar sem abiguidade onde uma mudança foi realizada e até reverter mudanças utilizando o commando git revert

git revert --no-edit <commit-hash>

Maiores usos do git revert não serão aqui abordados por não ser o foco deste artigo, mas tenha-o como exemplo de comando avançado git onde é necessário ter o commit-hash, valor obtido por meio do git log.

Lista completa oficial das flags

Aqui separei as flags que vi serem mais usadas na indústria, mas há uma lista oficial das flags existentes para este comando, que podem ser analisadas nesta documentação oficial: https://git-scm.com/docs/git-log.

Agora é sua vez!

Neste artigo usei como exemplo o repositório de código aberto React para análise de histórico, abra um repositório de sua autoria existente e utilize as configurações aqui ensinadas e poste nos comentários como ficou seu gráfico! Experimente utilizar flags diferentes e compare o resultado!

Para navegar por meio de seu histórico utilize as teclas j e k, para avançar para commits mais antigos e mais recentes, para sair da visualização de histórico pressione q.

Compartilhe
Recomendados para você
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Microsoft 50 Anos - Computação em Nuvem com Azure
Comentários (0)