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

123

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

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

RoR
источник
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
ralphtheninja
источник
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

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

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

Julien
источник
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

sk8asd123
источник
не работает получаю: 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
8

Vim красиво раскрашивает файлы, содержащие git diff.

git diff

Роза Перроне
источник
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).

Abhijeet
источник
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
Скотт Стенсланд
источник
0

Вы можете загрузить его на GitHub и предоставить ссылку на соответствующий коммит.

Чойлтон Б. Хиггинботтом
источник