Dane wyjściowe Git diff do pliku zachowują kolorowanie

123

Czy można jakoś zrobić git diffi zapisać wyjście do pliku z kolorowaniem?

Wiem, jak to zrobić git diff > filename.rtf- co zapisuje do pliku, ale chciałbym zachować kolorystykę.

RoR
źródło
2
Można konwertować do html kolorem: stackoverflow.com/questions/2013091/coloured-diff-to-html
Gabe Moothart
5
Notepad ++ podświetli plik, jeśli zapiszesz go z rozszerzeniem .diff.
Monsignor

Odpowiedzi:

147

Próbować:

git diff --color > foo.txt

Później wydanie:

cat foo.txt

Lub:

less -R foo.txt
ralphtheninja
źródło
2
@RoR, „bełkot” jednej osoby to kody kolorów innej osoby (no cóż, terminala). ;-) Wypróbowałem i działa; kolorystyka jest zachowana, jeśli catplik z wiersza poleceń. (Jak inaczej można by się spodziewać zachowania kolorów?)
mpontillo
1
Cóż, właśnie to robi. Dodaje kody kolorystyczne bash. Jeśli wytypujesz plik w konsoli, pokaże on kolory.
ralphtheninja
1
@RoR Musiałbyś umieścić tam coś pośrodku, aby przekonwertować kody kolorów bash do formatu rtf.
ralphtheninja
3
Notepad ++ może podświetlać pliki różnicowe. (Rozszerzenia * .diff są automatycznie podświetlane, w przeciwnym razie zmienią się Language --> D --> Diff.) Jeśli nie lubisz kolorów domyślnych, zmień je w Settings --> Style Configurator --> Diff. Aby skopiować wklej z kolorami, możesz użyć wtyczki (np. NppExport), Która umożliwia eksport / kopiowanie do formatu RTF lub HTML.
Nikita G.
3
git diff AB> foo.diff (Wiele redaktorów otworzy plik z kolorami, ponieważ jest to plik .diff)
zeusstl
34

Zapisz plik z rozszerzeniem .diff i otwórz go w Notepad ++, Vim lub SublimeText.

git diff > 20150203_someChanges.diff

Dzięki @Monsingor

ironhyde
źródło
Myślę, że zapomniałeś '>' w środku, to nie działa
GoGoris
20

Otwórz wyjściowy plik różnicowy w Sublime Text 2 . Pokazuje różne kolory.

Julien
źródło
1
Może zajść potrzeba zmiany składni na diff, aby umożliwić właściwe podświetlanie w przypadku, gdy plik diff ma rozszerzenie inne niż * .diff. (przez Widok -> Składnia -> Różnica).
Nikita G.
Nie podświetla się diff.txtdla mnie, nawet z automatycznie wykrytym „Diff” w prawym dolnym rogu.
Nakilon
11

Aby rozwinąć odpowiedź @ Gabe.

Możesz przesłać dane wyjściowe do skryptu bash konwertującego ansi na html i skierować je do pliku html:

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

oczywiście html można przeglądać w dowolnej przeglądarce, więc dane wyjściowe można odczytać w systemie Windows itp.

Kod ansi2html jest tutaj: http://www.pixelbeat.org/scripts/ansi2html.sh

sk8asd123
źródło
nie działa, otrzymuję: gawk: cmd. line: 25: (FILENAME = - FNR = 1) fatal: próba użycia tablicy `a (from span) 'w kontekście skalarnym
Tim
2
Zdobądź Homebrew i biegnij brew install gawk. Będziesz także potrzebować brew install gnu-sed.
Geoffrey Booth
dokładnie to, czego chcę, super!
Keith
Biblioteka ansi2html python zrobiła to za mnie github.com/ralphbean/ansi2html . pip można zainstalować i działa dokładnie tak, jak skrypt bash w tej odpowiedzi. Nie zapomnij zamienić „./ansi2html.sh” na „ansi2html”.
Nagasaki
8

Pliki kolorów Vima zawierające pięknie git diff.

git diff

Rose Perrone
źródło
3

Znalazłem odpowiedź tutaj: Kolor wyjściowy określonego polecenia git .

Możesz przejść -c color.ui=alwaysdo dowolnego gitpolecenia i będzie ono nadal kolorowało przy przekierowaniu. Na przykład:git -c color.ui=always status > file

amaslenn
źródło
2
git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master > foo.txt

Różnice wyodrębnione w plikach '* .txt' są łatwo odczytywane przez SublimeText2 bez potrzeby ustawiania (poprzez Widok -> Składnia -> Różnica).

Abhijeet
źródło
git remote rm remotes/b/masteraby zresetować gałąź z powrotem do jej pierwotnego stanu.
Abhijeet
1

aby każdy kolorowy tekst terminala ... git diff lub jakikolwiek inny ... był widoczny z przeglądarki

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

zainstaluj ahaza pomocą powyższego, a następnie wystaw

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

firefox  ~/cool_colorized.html
Scott Stensland
źródło
0

Możesz przesłać do GitHub i podać link do odpowiedniego zatwierdzenia.

Choylton B. Higginbottom
źródło