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


Respostas:


146

Experimentar:

git diff --color > foo.txt

Depois, questão:

cat foo.txt

Ou:

less -R foo.txt

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


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.


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


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



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).


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.