Вывод Git diff для сохранения цвета в файле


123

Можно ли как-нибудь сделать git diffи сохранить вывод в файл с раскраской?

Я умею делать git diff > filename.rtf- что сохраняет в файл, но хотелось бы сохранить окраску.


2
Вы можете преобразовать в HTML с помощью цвета: stackoverflow.com/questions/2013091/coloured-diff-to-html
Гейб Мутхарт,

5
Notepad ++ выделит файл, если вы сохраните его с расширением .diff.
Monsignor

Ответы:


147

Пытаться:

git diff --color > foo.txt

Затем последующий выпуск:

cat foo.txt

Или:

less -R foo.txt

2
@RoR, "тарабарщина" одного человека - это цветовые коды другого человека (ну, терминала). ;-) Попробовал, работает; цвет сохраняется, если я catзагружаю файл из командной строки. (Как еще можно было бы ожидать сохранения цветов?)
mpontillo

1
Ну вот что он делает. Добавляет коды раскраски bash. Если вы поместите файл в консоль, он покажет цвета.
ralphtheninja

1
@RoR Вам нужно будет поместить что-то посередине, чтобы преобразовать цветовые коды bash в формат rtf.
ralphtheninja

3
Notepad ++ может выделять файлы различий. (Расширения * .diff выделяются автоматически, в противном случае измените Language --> D --> Diff.) Если вам не нравятся цвета по умолчанию, измените их Settings --> Style Configurator --> Diff. Для копирования пасты с цветами вы можете использовать плагин (например NppExport), который позволяет экспортировать / копировать в RTF или HTML.
Никита Г.

3
git diff AB> foo.diff (Многие редакторы откроют файл с цветами, потому что это файл .diff)
zeusstl

34

Сохраните файл с расширением .diff и откройте его в Notepad ++, Vim или SublimeText.

git diff > 20150203_someChanges.diff

Спасибо @Monsingor


Я думаю, что вы забыли '>' посередине, это не работает
GoGoris

20

Откройте выходной файл сравнения в Sublime Text 2 . Он показывает цвета различий.


1
Возможно, вам придется изменить синтаксис на diff, чтобы включить правильное выделение, если файл diff имеет расширение, отличное от * .diff. (через View -> Syntax -> Diff).
Никита Г.

Он не выделяется diff.txtдля меня, даже если автоматически обнаруживается "Diff" в правом нижнем углу.
Nakilon

11

Чтобы расширить ответ @Gabe.

Вы можете направить вывод в bash-скрипт конвертера ansi в html и направить этот вывод в файл html:

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

конечно html можно просматривать в любом браузере, поэтому вывод можно читать в Windows и т. д.

Код ansi2html находится здесь: http://www.pixelbeat.org/scripts/ansi2html.sh


не работает получаю: gawk: cmd. строка: 25: (FILENAME = - FNR = 1) фатальный: попытка использовать массив `a (from span) 'в скалярном контексте
Тим

2
Получите Homebrew и бегите brew install gawk. Вам также понадобится brew install gnu-sed.
Джеффри Бут,

именно то, что я хочу, круто!
Кейт

Библиотека python ansi2html сделала это за меня github.com/ralphbean/ansi2html . pip устанавливается и работает точно так же, как сценарий bash в этом ответе. Не забудьте заменить "./ansi2html.sh" на "ansi2html".
Nagasaki45



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

Различия, извлеченные в файлах '* .txt', легко читаются SublimeText2 без необходимости устанавливать (через View -> Syntax -> Diff).


git remote rm remotes/b/masterчтобы вернуть ветку в исходное состояние.
Abhijeet

1

чтобы любой раскрашенный текст терминала ... git diff или любой другой ... был доступен для просмотра в браузере

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

установить, ahaиспользуя выше, затем выпустить

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

firefox  ~/cool_colorized.html

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.