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).
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
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.
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, q
der Befehl zum Schließen ( Beenden ) einer Datei, und das a
Postfix wendet dies auf alle geöffneten Dateien an.
Tom
Tim