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>
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>"
A medida que o desenvolvimento avança e julgo necessários novos commits, passo a utiliza o --amend
:
git commit --amend
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>
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)