Saída Git diff para arquivo preservar a coloração

123

É possível fazer git diffe salvar a saída em um arquivo com a coloração de alguma forma?

Eu sei fazer git diff > filename.rtf- o que salva em um arquivo, mas gostaria de preservar a coloração.

RoR
fonte
2
Você pode converter para html com a cor: stackoverflow.com/questions/2013091/coloured-diff-to-html
Gabe Moothart
5
O Notepad ++ destacará o arquivo se você salvá-lo com a extensão .diff.
Monsenhor

Respostas:

146

Experimentar:

git diff --color > foo.txt

Depois, questão:

cat foo.txt

Ou:

less -R foo.txt
Ralphtheninja
fonte
2
@RoR, o "jargão" de uma pessoa são os códigos de cores de outra pessoa (bem, do terminal). ;-) Eu tentei e funciona; a coloração é preservada se eu catusar o arquivo da linha de comando. (De que outra forma você esperaria que as cores fossem preservadas?)
mpontillo
1
Bem, é isso que faz. Adiciona códigos de coloração bash. Se você catar o arquivo no console, ele mostra as cores.
ralphtheninja
1
@RoR Você teria que colocar algo no meio lá para converter os códigos de cores do bash para o formato rtf.
ralphtheninja
3
O Notepad ++ pode destacar arquivos diff. (As extensões * .diff são realçadas automaticamente, caso contrário, mudam Language --> D --> Diff.) Se você não gosta das cores padrão, mude-as para Settings --> Style Configurator --> Diff. Para copiar e colar com cores você pode usar um plugin (por exemplo NppExport) que permite exportar / copiar em RTF ou HTML.
Nikita G.
3
git diff AB> foo.diff (muitos editores abrirão o arquivo com as cores porque o arquivo é um arquivo .diff)
zeusstl
34

Salve o arquivo com uma extensão .diff e abra-o no Notepad ++ ou Vim ou SublimeText.

git diff > 20150203_someChanges.diff

Obrigado @Monsingor

ironhyde
fonte
Acho que você esqueceu '>' no meio, isso não funciona
GoGoris
20

Abra o arquivo diff de saída em Sublime Text 2 . Ele mostra as cores diferentes.

Julien
fonte
1
Você pode precisar alterar a sintaxe para diff para habilitar o realce apropriado caso o arquivo diff tenha extensão diferente de * .diff. (via View -> Sintaxe -> Diff).
Nikita G.
Não é realçado diff.txtpara mim, mesmo com "Diff" detectado automaticamente no canto inferior direito.
Nakilon de
11

Para expandir a resposta de @Gabe.

Você pode canalizar a saída para um script bash do conversor ansi para html e direcionar essa saída para um arquivo html:

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

é claro que o html pode ser visualizado por qualquer navegador para que a saída possa ser lida no Windows etc.

o código ansi2html está aqui: http://www.pixelbeat.org/scripts/ansi2html.sh

sk8asd123
fonte
não funciona Recebo: gawk: cmd. linha: 25: (FILENAME = - FNR = 1) fatal: tentativa de usar o array `a (from span) 'em um contexto escalar
Tim
2
Obtenha o Homebrew e execute brew install gawk. Você também precisará brew install gnu-sed.
Geoffrey Booth
exatamente o que eu quero, incrível!
Keith
A biblioteca ansi2html python fez isso por mim github.com/ralphbean/ansi2html . pip instalável e funciona exatamente como o script bash nesta resposta. Não se esqueça de substituir "./ansi2html.sh" por "ansi2html".
Nagasaki45
8

Arquivos de cores do Vim contendo git diff lindamente.

git diff

Rose Perrone
fonte
3

Encontrei uma resposta aqui: saída de cor de comando git específico .

Você pode passar -c color.ui=alwayspara qualquer gitcomando e ele continuará colorindo no redirecionamento. Por exemplo:git -c color.ui=always status > file

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

As diferenças extraídas em arquivos '* .txt' são facilmente lidas pelo SublimeText2 sem a necessidade de definir (via Exibir -> Sintaxe -> Diff).

Abhijeet
fonte
git remote rm remotes/b/masterpara redefinir o branch de volta ao seu estado original.
Abhijeet de
1

para permitir que qualquer texto de terminal colorido ... git diff ou qualquer outro ... seja visualizado em um navegador

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

instalar ahausando acima e depois emitir

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

firefox  ~/cool_colorized.html
Scott Stensland
fonte
0

Você pode fazer o upload para o GitHub e fornecer um link para o commit relevante.

Choylton B. Higginbottom
fonte