Wenn ich an einem Fix oder einer Funktion arbeite, stolpere ich manchmal über andere winzige Probleme, die sich im Handumdrehen in Sekundenschnelle beheben lassen. Wenn ich sie sofort durchführe und dann das fertige Feature / den Fix festschreibe, enthält das Festschreiben mehr als eine Sache. Zum Beispiel "add feature X and code clean up"
oder "fix bug X and improved logging"
. Es wäre besser, dies in zwei Commits aufzuteilen. Falls die beiden Änderungen in derselben Datei vorgenommen wurden, kann ich nicht einfach eine Datei hinzufügen, festschreiben, die andere hinzufügen und dann erneut festschreiben. Daher sehe ich die folgenden drei Optionen:
Übersehen Sie absichtlich Dinge, die nichts miteinander zu tun haben, während Sie an etwas arbeiten.
Kopieren Sie die Datei mit zwei Änderungen, setzen Sie sie zurück, schließen Sie eine Änderung ein, übernehmen Sie die andere Änderung, übernehmen Sie sie erneut.
Ändern Sie keine kleinen Dinge, die nichts miteinander zu tun haben, sondern fügen Sie sie einer Aufgabenliste hinzu und führen Sie sie später aus.
Ich mag nicht wirklich alle drei Optionen, aus den folgenden Gründen:
Die Codequalität kann leiden, wenn man kleine Probleme nicht behebt. Und ich fühle mich schlecht, wenn ich bewusst eine Chance verpasse, ohne großen Aufwand etwas zu verbessern.
Dies erhöht die manuelle Arbeit und ist fehleranfällig.
Dies ist in Ordnung für nicht allzu kleine Aufgaben, aber das Hinzufügen eines winzigen Elements zu einer Aufgabenliste und das spätere Wiederauffinden dauert oft viel länger als das sofortige Beheben.
Wie gehen Sie mit solchen Situationen um?
git add -p
eine Menge, mit der ich interaktiv die Teile der Dateien auswählen kann, die ich festschreiben möchte. Wenn die Reinigung ausreichend getrennt ist, ist dies einfach durchzuführen. Wenn die Trennung schwieriger ist, lege ich den Status für einen temporären Zweig fest und füge die Änderungen dann manuell zu meinem tatsächlichen Zweig hinzu, bis für den temporären Zweig kein Unterschied mehr besteht. Dies erfordert viel mehr Arbeit, aber ich kann überprüfen, ob jedes Commit für sich funktioniert.