git range-diff für überarbeitete Branches
- Matt
Nach einem git rebase -i mit Squash, Reorder und ein paar Fixups wollte ich
wissen, was sich an den einzelnen Commits inhaltlich geändert hat - nicht nur,
dass sich die Hashes geändert haben. Ein einfacher git diff zwischen altem
und neuem Branch hilft wenig, weil er alles als einen großen Klumpen zeigt statt
Commit für Commit.
git range-diff vergleicht zwei Versionen einer Commit-Reihe und paart
zusammengehörige Commits automatisch:
git range-diff main..feature@{1} main..feature
feature@{1} ist der Stand vor dem letzten Rebase, aus dem Reflog. Die Ausgabe
zeigt pro Commit-Paar ein Diff des Diffs - was wirklich geändert wurde, mit
+/- in einer zweiten Spalte für Zeilen, die nur wegen verschobener Commits
anders aussehen.
Der Haken: bei kompletten Rewrites eines Commits erkennt es die Zuordnung
manchmal falsch und zeigt Löschung plus Neuanlage statt eines Diffs. Dagegen
hilft --creation-factor=<prozent>, um die Schwelle zu verschieben. Die Ausgabe
ist außerdem nicht stabil zwischen Git-Versionen - für Skripte ungeeignet.
Quelle: git-range-diff(1)