Mein persönlicher Ansatz für ein Git-Commit ist, dass jedes Commit in seiner Vollständigkeit eine Änderungseinheit enthalten sollte.
Wenn ich mich entwickle, konzentriere ich mich normalerweise auf solche Einheiten. Aber manchmal wandert meine Aufmerksamkeit woanders hin und ich arbeite eine Weile an einem anderen Gerät. Dies ist wahrscheinlich nicht optimal, aber ich habe gelernt, mich sorgfältig zu engagieren ( git add --interactive
ist ein guter Freund von mir).
Es kann jedoch vorkommen, dass ich vergesse, meine Änderungen selektiv zu inszenieren und stattdessen die gesamte Datei festzuschreiben, da ich glaube, dass alle Änderungen, die ich im Diff sehe, tatsächlich mit derselben Einheit zusammenhängen, obwohl es möglicherweise ein oder zwei Änderungen gibt, die völlig unabhängig voneinander sind.
Dann ich git push
.
Ist das gefährlich? Sollte ich mich bemühen, das Commit so zu ändern, dass es nur die beabsichtigten Änderungen enthält? Mein Hauptanliegen ist, dass jeder, der sich die Geschichte noch einmal ansieht, die Veränderung sieht und sich wahrscheinlich einige Minuten am Kopf kratzt, bevor er merkt, dass es höchstwahrscheinlich ein Fehler ist. Schlimmer noch, ich kann mir vorstellen, dass die Änderung sogar verwandt aussieht und der Programmierer den Fehler möglicherweise nicht erkennt.
Das Problem ist, dass ich, da ich bereits gepusht habe, den Serververlauf nicht sicher umschreiben kann, sodass ich wahrscheinlich zuerst das Commit zurücksetzen, es richtig aufteilen und erneut festschreiben müsste. Alternativ könnte ich das Commit einfach mit einer besseren Commit-Nachricht ändern, aber ich müsste wirklich sehr schnell sein, da es auch das Umschreiben des Verlaufs erfordert. Als letzten Ausweg könnte ich einfach die Einheit festschreiben, an der ich als nächstes gearbeitet habe, und eine Notiz hinterlassen, dass es eine entsprechende Änderung beim vorherigen Festschreiben gibt (aber das fühlt sich falsch an).
Ich verstehe, dass dies in Multi-Entwickler-Setups mit ordnungsgemäßem Code-Review-Workflow wahrscheinlich nicht passieren würde. Ich verstehe auch, dass das Umschreiben des Verlaufs die beste Lösung dafür ist, wenn ich der einzige Entwickler eines Projekts bin.