
Git-Diff
Ein Git-Diff zeigt Zeile für Zeile, was sich zwischen zwei Versionen einer Datei geändert hat. Es ist die Standardform, in der Programmiererinnen und Programmierer Änderungen prüfen, besprechen und weitergeben.
An einem Programm arbeiten oft viele Leute gleichzeitig. Damit dabei nichts verloren geht, wird jede Version des Programmtextes gespeichert. Das übernimmt eine Software namens Git, die den kompletten Verlauf eines Projekts verwaltet. Ein Git-Diff ist die Antwort auf die Frage: Was genau ist zwischen zwei dieser Versionen anders? Ausgegeben wird kein Fließtext, sondern eine Liste der betroffenen Zeilen. Entfernte Zeilen stehen mit einem Minuszeichen davor, neu hinzugekommene mit einem Pluszeichen.
Warum Programmierer in Diffs denken
Ein mittelgroßes Softwareprojekt besteht aus hunderttausenden Zeilen Text. Niemand kann die nach jeder Änderung neu lesen. Interessant ist fast immer nur der Unterschied zur letzten Fassung. Das Diff reduziert eine riesige Datenmenge auf die paar Zeilen, um die es wirklich geht.
Deshalb ist das Diff auch die Grundlage der Qualitätskontrolle. Bevor eine Änderung in ein Projekt aufgenommen wird, schaut mindestens eine zweite Person darüber. Dieser Vorgang heißt Code-Review, und die Person liest dabei nichts anderes als ein Diff. Fehler fallen so auf, bevor sie bei Nutzern landen.
Ein Nebeneffekt ist Nachvollziehbarkeit über Jahre. Taucht ein Fehler auf, lässt sich zurückverfolgen, welche einzelne Änderung ihn verursacht hat. Man sucht nicht in der ganzen Datei, sondern durchgeht die Diffs der letzten Wochen. In Firmen ist das oft auch eine rechtliche Anforderung: Es muss dokumentiert sein, wer wann was verändert hat.
Plus, Minus und der Kontext drumherum
Git vergleicht zwei Textfassungen und sucht die längste gemeinsame Abfolge von Zeilen. Alles, was in dieser Abfolge fehlt, gilt als gelöscht oder eingefügt. Das Ergebnis wird in Blöcken ausgegeben, den sogenannten Hunks. Jeder Hunk beginnt mit einer Angabe, ab welcher Zeilennummer er gilt.
Um jede Änderung herum stehen standardmäßig drei unveränderte Zeilen. Dieser Kontext dient der Orientierung, denn eine nackte Zeile ohne Umgebung sagt wenig aus. Ein häufiger Irrtum ist, ein Diff speichere die Änderung selbst. Tatsächlich speichert Git ganze Dateiversionen; das Diff wird bei Bedarf neu berechnet.
Wichtig ist auch, was ein Diff nicht kann. Es arbeitet zeilenweise und rein textlich. Verschiebt jemand einen Programmabschnitt unverändert an eine andere Stelle, sieht das Diff eine große Löschung und eine große Einfügung. Und bei Bildern oder Videos versagt es ganz: Dort meldet Git nur, dass sich die Datei geändert hat.
Vom Terminal bis zum KI-Assistenten
Am direktesten begegnet man Diffs über den Befehl git diff in der Kommandozeile. Sichtbarer sind sie auf Plattformen wie GitHub oder GitLab, wo Millionen Softwareprojekte liegen. Dort erscheint jede vorgeschlagene Änderung als farbige Gegenüberstellung: gelöschte Zeilen rot, neue grün. Auch Wikipedia nutzt dasselbe Prinzip in ihrer Versionsgeschichte.
In den vergangenen Jahren ist das Diff zusätzlich zum Format zwischen Mensch und Maschine geworden. KI-Programmierassistenten geben ihre Vorschläge meist als Diff aus, nicht als komplette neue Datei. Der Nutzer sieht dann genau, welche Zeilen der Assistent anfassen will, und kann einzelne Vorschläge annehmen oder verwerfen.
Auch beim Training solcher Systeme spielen Diffs eine Rolle. Öffentliche Projekte enthalten Millionen dokumentierter Änderungen samt kurzer Begründung. Daraus lernen Modelle, wie eine sinnvolle Korrektur aussieht. Wer Meldungen über Programmier-KI liest, stößt deshalb regelmäßig auf den Begriff.