Minha abordagem pessoal a um commit do git é que todo commit deve incluir uma unidade de mudança , em sua completude.
Quando desenvolvo, geralmente me concentro nessas unidades. Mas, às vezes, minha atenção se desvia para outro lugar e trabalho por um tempo em uma unidade diferente. Provavelmente não é o ideal, mas aprendi a me comprometer com cuidado ( git add --interactive
é um bom amigo meu).
No entanto, pode acontecer que eu esqueça de preparar seletivamente minhas alterações e, em vez disso, comprometa o arquivo inteiro, acreditando que todas as alterações que vejo no diff estão realmente relacionadas à mesma unidade, mesmo que possa haver uma ou duas alterações completamente independentes.
Então eu git push
.
Isso é perigoso? Devo fazer um esforço para alterar o commit para que ele inclua apenas as alterações pretendidas? Minha principal preocupação é que quem quer que veja a história verá a mudança e provavelmente coçará a cabeça por vários minutos antes de perceber que é provavelmente um erro. Pior ainda, posso imaginar que a mudança pareça relacionada e o programador pode não reconhecer o erro.
O problema é que, como já enviei por push, não consigo reescrever com segurança o histórico do servidor, portanto, provavelmente eu teria que reverter a confirmação, dividi-la corretamente e confirmar novamente. Como alternativa, eu poderia simplesmente alterar o commit com uma mensagem de commit melhor, mas eu teria que ser realmente muito rápido, pois também requer reescrever o histórico. Como último recurso, eu poderia simplesmente confirmar a unidade em que estava trabalhando, deixando uma observação de que há uma alteração relacionada na confirmação anterior (mas isso parece errado).
Entendo que em configurações de vários desenvolvedores com fluxo de trabalho de revisão de código adequado, isso provavelmente não aconteceria. Também entendo que, se eu sou o único desenvolvedor de um projeto, a reescrita do histórico é a melhor solução para isso.