Git Diff-Ausgabe zur Beibehaltung der Farbgebung

122

Ist es möglich, git diffdie Ausgabe in einer Datei mit der Färbung zu speichern?

Ich weiß, wie es geht git diff > filename.rtf- was in einer Datei gespeichert wird, aber ich möchte die Farbgebung beibehalten.

RoR
quelle
2
Sie können in HTML mit Farbe konvertieren: stackoverflow.com/questions/2013091/coloured-diff-to-html
Gabe Moothart
5
Notepad ++ hebt die Datei hervor, wenn Sie sie mit der Erweiterung .diff speichern.
Monsignore

Antworten:

145

Versuchen:

git diff --color > foo.txt

Dann spätere Ausgabe:

cat foo.txt

Oder:

less -R foo.txt
ralphtheninja
quelle
2
@RoR, der "Kauderwelsch" einer Person ist der Farbcode einer anderen Person (also des Terminals). ;-) Ich habe es versucht und es funktioniert; Die Färbung bleibt erhalten, wenn ich catdie Datei von der Kommandozeile aus. (Wie sonst würden Sie erwarten, dass die Farben erhalten bleiben?)
mpontillo
1
Nun, das ist es, was es tut. Fügt Bash-Farbcodes hinzu. Wenn Sie die Datei in der Konsole katzen, werden die Farben angezeigt.
Ralphtheninja
1
@RoR Sie müssten dort etwas in die Mitte setzen, um die Bash-Farbcodes in das RTF-Format zu konvertieren.
Ralphtheninja
3
Notepad ++ kann Diff-Dateien hervorheben. (* .diff-Erweiterungen werden automatisch hervorgehoben, andernfalls ändern sie sich Language --> D --> Diff.) Wenn Sie Standardfarben nicht mögen, ändern Sie sie in Settings --> Style Configurator --> Diff. Zum Kopieren und Einfügen mit Farben können Sie ein Plugin (z. B. NppExport) verwenden, mit dem Sie in RTF oder HTML exportieren / kopieren können.
Nikita G.
3
git diff AB> foo.diff (Viele Editoren öffnen die Datei mit den Farben, da es sich bei der Datei um eine .diff-Datei handelt)
zeusstl
33

Speichern Sie die Datei mit der Erweiterung .diff und öffnen Sie sie in Notepad ++ oder Vim oder SublimeText.

git diff > 20150203_someChanges.diff

Danke @Monsingor

Eisenhyd
quelle
Ich denke, dass Sie '>' in der Mitte vergessen haben, das funktioniert nicht
GoGoris
20

Öffnen Sie die Ausgabe-Diff-Datei in Sublime Text 2 . Es zeigt die verschiedenen Farben.

Julien
quelle
1
Möglicherweise müssen Sie die Syntax in diff ändern, um eine ordnungsgemäße Hervorhebung zu ermöglichen, falls die diff-Datei eine andere Erweiterung als * .diff hat. (über Ansicht -> Syntax -> Diff).
Nikita G.
Es wird diff.txtfür mich nicht hervorgehoben , selbst wenn "Diff" in der rechten unteren Ecke automatisch erkannt wird.
Nakilon
10

Um die Antwort von @ Gabe zu erweitern.

Sie können die Ausgabe an ein Bash-Skript für Ansi-zu-HTML-Konverter weiterleiten und diese Ausgabe an eine HTML-Datei weiterleiten:

git diff --color|./ansi2html.sh > changes.html

Natürlich kann HTML von jedem Browser angezeigt werden, sodass die Ausgabe in Windows usw. gelesen werden kann.

Der ansi2html-Code ist hier: http://www.pixelbeat.org/scripts/ansi2html.sh

sk8asd123
quelle
funktioniert nicht ich bekomme: gawk: cmd. Zeile: 25: (FILENAME = - FNR = 1) fatal: Versuch, das Array "a (from span)" in einem skalaren Kontext zu verwenden
Tim
2
Holen Sie sich Homebrew und rennen brew install gawk. Du wirst es auch brauchen brew install gnu-sed.
Geoffrey Booth
genau das was ich will, super!
Keith
Die ansi2html-Python-Bibliothek hat es für mich getan github.com/ralphbean/ansi2html . pip installierbar und funktioniert genau wie das Bash-Skript in dieser Antwort. Vergessen Sie nicht, "./ansi2html.sh" durch "ansi2html" zu ersetzen.
Nagasaki45
8

Vim färbt Dateien mit Git Diff wunderschön.

Git Diff

Rose Perrone
quelle
3

Ich habe hier eine Antwort gefunden: Farbausgabe eines bestimmten Git-Befehls .

Sie können -c color.ui=alwaysan jeden gitBefehl übergeben, der bei der Umleitung weiterhin farbig dargestellt wird. Beispielsweise:git -c color.ui=always status > file

amaslenn
quelle
2
git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master > foo.txt

In '* .txt'-Dateien extrahierte Unterschiede können von SublimeText2 problemlos gelesen werden, ohne dass eine Einstellung erforderlich ist (über Ansicht -> Syntax -> Diff).

Abhijeet
quelle
git remote rm remotes/b/masterum den Zweig wieder in seinen ursprünglichen Zustand zurückzusetzen.
Abhijeet
1

damit farbiger Terminaltext ... git diff oder ein anderer ... von einem Browser aus angezeigt werden kann

sudo apt-get install aha  #  https://github.com/theZiz/aha

Installation ahamit oben, dann Problem

git diff --color mysourcefile  | aha > ~/cool_colorized.html

firefox  ~/cool_colorized.html
Scott Stensland
quelle
0

Sie können auf GitHub hochladen und einen Link zum entsprechenden Commit bereitstellen.

Choylton B. Higginbottom
quelle