Editor oder Tool, die Git-Versionen nebeneinander anzeigen

Ich suche nach einem Editor oder Tool, das zwei verschiedene Dateiversionen in einem Git-Repository nebeneinander anzeigen kann.

Es gibt eine ähnliche Funktionalität auf github , aber es vergleicht nur die ausgewählte Version mit der vorherigen und ich möchte, dass es flexibler ist (z. B. zwei beliebige Versionen der Datei vergleichen).

Beispiel-Screenshot

Ich nehme an, Sie wollen eine GUI-Schnittstelle?
@Tom ja, ich würde gerne die Änderungen hervorgehoben sehen, aber wenn es eine Befehlszeilenlösung gibt, die (a) benutzerfreundlich ist, (b) eine klar formatierte Ausgabe zurückgibt, warum dann nicht ...

Antworten (2)

Wenn Sie Ihren letzten Kommentar zum Zeitpunkt des Schreibens lesen, können Sie dies ganz einfach mit dem Befehlszeilentool namens Cdiff tun. Die Verwendung ist ziemlich einfach und funktioniert mit Git, Mercurial und SVN. Es ist in Python geschrieben und läuft daher gut unter Linux.

CDiff (Open-Source)

Begriffsbasiertes Tool zum Anzeigen von farbigen, inkrementellen Diffs in einem Git/Mercurial/Svn-Arbeitsbereich oder von stdin, mit Side-by-Side- und Auto-Pager-Unterstützung. Erfordert Python (>= 2.5.0) und weniger.

git log -p -2 | cdiff       # view git log with changes of last 2 commits
git show 15bfa | cdiff -s   # view a given git commit, side by side

Bildschirmfoto

Git hat tatsächlich einen speziellen Befehl für diesen Zweck: git difftool. Je nach Konfiguration wird ein geeigneter Editor geöffnet; In meinem Setup (und ich denke standardmäßig) ist dies vimdiff :

$ git config --global diff.tool
vimdiff

Dies sollte auf jedem typischen Unix-System verfügbar sein. Es sieht nicht gerade schön aus (eher etwas zu bunt), aber es macht was man will.

Screenshot von vimdiff, aufgerufen von git

Und weil es im Grunde nur ein spezieller Modus von vim ist, kann es auch sehr gut zum Editieren von Changesets verwendet werden. Wenn Sie beispielsweise einfach ausführen git difftool, ist die rechte Ansicht tatsächlich die Datei im Arbeitsverzeichnis. So können Sie alle Änderungen direkt in diesem Editor ändern, bevor Sie sie übernehmen! (Standardmäßig werden jedoch beide Dateien im Lesemodus geöffnet, sodass Sie tatsächlich :w!alle Änderungen speichern müssen, die in vorgenommen wurden vimdiff.)

Ah, und: Um diesen Editor zu verlassen, geben Sie :qa. Hier :ist das Standard-vi-Präfix für ed-Befehle, qder Befehl zum Schließen ( Beenden ) einer Datei, und das aPostfix wendet dies auf alle geöffneten Dateien an.