Git diff output su file conserva la colorazione


Risposte:


147

Provare:

git diff --color > foo.txt

Quindi problema successivo:

cat foo.txt

O:

less -R foo.txt

2
@RoR, il "incomprensibile" di una persona è il codice colore di un'altra persona (beh, il terminale). ;-) Ho provato e funziona; la colorazione viene preservata se inserisco catil file dalla riga di comando. (In quale altro modo ti aspetteresti che i colori vengano preservati?)
mpontillo

1
Bene, questo è quello che fa. Aggiunge codici di colorazione bash. Se cat il file nella console mostra i colori.
ralphtheninja

1
@RoR Dovresti mettere qualcosa nel mezzo per convertire i codici colore bash in formato rtf.
ralphtheninja

3
Notepad ++ può evidenziare i file diff. (Le estensioni * .diff vengono evidenziate automaticamente, altrimenti cambiano Language --> D --> Diff.) Se non ti piacciono i colori predefiniti, modificali in Settings --> Style Configurator --> Diff. Per copiare incolla con colori puoi usare un plugin (es. NppExport) Che permette di esportare / copiare in RTF o HTML.
Nikita G.

3
git diff AB> foo.diff (molti editor apriranno il file con i colori perché il file è un file .diff)
zeusstl

34

Salva il file con estensione .diff e aprilo in Notepad ++ o Vim o SublimeText.

git diff > 20150203_someChanges.diff

Grazie @Monsingor


Penso che tu abbia dimenticato ">" nel mezzo, questo non funziona
GoGoris

20

Apri il file diff di output in Sublime Text 2 . Mostra i colori diff.


1
Potrebbe essere necessario modificare la sintassi in diff per abilitare l'evidenziazione corretta nel caso in cui il file diff abbia un'estensione diversa da * .diff. (tramite Visualizza -> Sintassi -> Diff).
Nikita G.

Non evidenzia diff.txtper me, anche con "Diff" rilevato automaticamente nell'angolo in basso a destra.
Nakilon

11

Per espandere la risposta di @ Gabe.

È possibile reindirizzare l'output a uno script bash del convertitore da ansi a html e indirizzare l'output a un file html:

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

ovviamente html può essere visualizzato da qualsiasi browser in modo che l'output possa essere letto in Windows ecc.

Il codice ansi2html è qui: http://www.pixelbeat.org/scripts/ansi2html.sh


non funziona ottengo: gawk: cmd. riga: 25: (FILENAME = - FNR = 1) fatal: tentativo di utilizzare l'array `a (from span) 'in un contesto scalare
Tim

2
Ottieni Homebrew e corri brew install gawk. Avrai anche bisogno di brew install gnu-sed.
Geoffrey Booth

esattamente quello che voglio, fantastico!
Keith

La libreria python ansi2html lo ha fatto per me github.com/ralphbean/ansi2html . pip installabile e funziona esattamente come lo script bash in questa risposta. Non dimenticare di sostituire "./ansi2html.sh" con "ansi2html".
Nagasaki



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

Le differenze estratte nei file '* .txt' vengono facilmente lette da SublimeText2 senza la necessità di impostarle (tramite Visualizza -> Sintassi -> Diff).


git remote rm remotes/b/masterper ripristinare il ramo allo stato originale.
Abhijeet

1

per consentire a qualsiasi testo terminale colorato ... git diff o qualsiasi altro ... di essere visualizzabile da un browser

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

installare ahautilizzando sopra, quindi emettere

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

firefox  ~/cool_colorized.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.