Ao trabalhar em uma correção ou recurso, às vezes me deparei com outros pequenos problemas que podem ser melhorados rapidamente em questão de segundos. Quando eu os faço imediatamente e, em seguida, confirmo o recurso / correção finalizado, o commit inclui mais de uma coisa. Por exemplo "add feature X and code clean up"
ou "fix bug X and improved logging"
. Seria melhor dividir isso em dois commits. Caso as duas alterações ocorram no mesmo arquivo, não posso simplesmente adicionar um arquivo, confirmar, adicionar o outro e confirmar novamente. Então, eu vejo as três opções a seguir:
Ignore deliberadamente coisas não relacionadas ao trabalhar em alguma coisa.
Copie o arquivo com duas alterações, revertê-lo, incluir uma alteração, confirmar, incluir a outra alteração, confirmar novamente.
Não altere pequenas coisas não relacionadas, mas adicione-as a uma lista de tarefas e faça-as mais tarde.
Eu realmente não gosto de todas as três opções, pelos seguintes motivos:
A qualidade do código pode sofrer se não se resolver pequenos problemas. E me sinto mal se perder conscientemente a chance de melhorar algo sem muito esforço.
Isso aumenta o trabalho manual e é propenso a erros.
Isso é bom para todos não tão pequenos, mas adicionar um item minúsculo a uma lista de tarefas e revisitá-lo mais tarde geralmente leva muito mais tempo do que apenas corrigi-lo imediatamente.
Como você lida com essas situações?
git add -p
muito, o que me permite selecionar interativamente as partes dos arquivos que quero confirmar. Se a limpeza for suficientemente separada, isso é fácil. Se a separação for mais difícil, confirmo o estado em uma ramificação temporária e adiciono manualmente as alterações à minha ramificação real até que não haja diferenças na ramificação temporária. Isso requer muito mais trabalho, mas me permite verificar se cada confirmação funciona por conta própria.