Lorsque je travaille sur un correctif ou une fonctionnalité, je tombe parfois sur d'autres petits problèmes qui peuvent être améliorés à la volée en quelques secondes. Lorsque je les fais immédiatement, puis que je valide la fonctionnalité / correction terminée, la validation inclut plus d'une chose. Par exemple "add feature X and code clean up"
ou "fix bug X and improved logging"
. Il serait préférable de diviser cela en deux commits. Dans le cas où les deux changements se sont produits dans le même fichier, je ne peux pas simplement ajouter un fichier, valider, ajouter l'autre puis recommencer. Je vois donc les trois options suivantes:
Oubliez délibérément les choses non liées tout en travaillant sur quelque chose.
Copiez le fichier avec deux modifications, annulez-le, incluez une modification, validez, incluez l'autre modification, validez à nouveau.
Ne modifiez pas les petites choses sans rapport, mais ajoutez-les à une liste de tâches et faites-les plus tard.
Je n'aime pas vraiment les trois options, pour les raisons suivantes:
La qualité du code peut souffrir si l'on ne résout pas les petits problèmes. Et je me sens mal si je manque consciemment une chance d'améliorer quelque chose sans trop d'effort.
Cela augmente le travail manuel et est sujet aux erreurs.
C'est bien pour les tâches pas si minuscules, mais ajouter un petit élément à une liste de tâches et le revisiter plus tard prend souvent beaucoup plus de temps que de le corriger immédiatement.
Comment gérez-vous de telles situations?
git add -p
beaucoup ce qui me permet de sélectionner de manière interactive les parties des fichiers que je veux valider. Si le nettoyage est suffisamment séparé, c'est facile à faire. Si la séparation est plus difficile, je valide l'état sur une branche temporaire, puis j'ajoute manuellement les modifications à ma branche réelle jusqu'à ce qu'il n'y ait pas de différence dans la branche temporaire. Cela nécessite beaucoup plus de travail, mais me permet de vérifier que chaque commit fonctionne seul.