DEV Community

Pedro Nandi
Pedro Nandi

Posted on

Vantagens do git commit --amend

Nos últimos tempos, abordei esse tema com algumas pessoas e vi que esse artigo pode servir pra alguém, no futuro. No projeto onde trabalho, os devs decidiram pelo seguinte padrão relacionado ao git:

Cada pull request (PR) deve ter um único commit. Decidiram isso para facilitar os code reviews. Em pouco tempo, gostei do padrão e decidi adotá-lo até em projetos pessoais. Nesse artigo vou mostrar passo-a-passo como faço:

1. Criação da branch:

Após rodar um git pull em cima da branch de develop, eu crio uma branch para o meu desenvolvimento:

git checkout -b feature/<card_id>_<card_description>
Enter fullscreen mode Exit fullscreen mode

2. Criação dos commits:

Após realizar algumas alterações, crio o primeiro commit da branch, com o título:

git commit -m "<card_id> <commit_title>"
Enter fullscreen mode Exit fullscreen mode

A medida que o desenvolvimento avança e julgo necessários novos commits, passo a utiliza o --amend:

git commit --amend
Enter fullscreen mode Exit fullscreen mode

Ao executar esse comando, o terminal abre um arquivo texto referente a este commit. Esse arquivo já possui o título do primeiro commit que realizei, na primeira linha. Se eu desejo adicionar mais informação ao commit, eu informo a partir da segunda linha do arquivo. Dessa forma, o commit fica dividido entre título e texto:

<card_id> <commit_title> #primeira linha (título do commit)
<commit description> #segunda linha em diante (texto)
<commit description>
<commit description>
<commit description>
Enter fullscreen mode Exit fullscreen mode

Ao terminar de alterar o arquivo, um Ctrl+X salva o commit. Ao término dessa etapa, um git log vai mostrar apenas um commit referente à branch e assim vou até o final do desenvolvimento. Quando finalizo, posso prosseguir com um git push origin <branch_name> para criar a branch na ferramenta de versionamento.

Já na ferramenta (utilizo Github em casa e Bitbucket no trabalho), no momento de abrir o PR, consigo vizualizar o título do commit, o texto com toda a descrição do que foi feito e tudo isso com apenas 1 commit, ao invés de uma lista de commits.

Bônus 1: Quando abro um PR e vejo que tenho algum conflito que precisa ser resolvido (durante meu desenvolvimento, alguém evoluiu a branch de develop e preciso puxar coisas), eu executo um git pull --rebase origin develop. Dessa forma, o git baixa tudo que a develop da cloud tem que a minha branch (criada com base em uma develop anterior) não tem. Dessa forma, consigo resolver os conflitos (utilizo o VS Code pra isso) e dar um push que normaliza o PR aberto.

Bônus 2: Quando o objetivo é aglutinar muitos commits já realizados dentro de um mesmo PR ou branch, utilizo a técnica de squash, que tá bem explicadinha aqui.

Acho essa metodologia de trabalho com o git super tranquila e me evita muitas dores de cabeça. Valeeu!

Top comments (0)