Sortie de Git diff vers fichier préserver la coloration


123

Est-il possible de faire git diffet d'enregistrer la sortie dans un fichier avec la coloration en quelque sorte?

Je sais comment faire git diff > filename.rtf- ce qui enregistre dans un fichier, mais j'aimerais conserver la coloration.


2
Vous pouvez convertir en HTML avec la couleur: stackoverflow.com/questions/2013091/coloured-diff-to-html
Gabe Moothart

5
Notepad ++ mettra en évidence le fichier si vous l'enregistrez avec l'extension .diff.
Monsignor

Réponses:


147

Essayer:

git diff --color > foo.txt

Puis émission ultérieure:

cat foo.txt

Ou:

less -R foo.txt

2
@RoR, le «charabia» d'une personne est les codes de couleur d'une autre personne (enfin, du terminal). ;-) Je l'ai essayé et il fonctionne; la coloration est préservée si je catle fichier de la ligne de commande. (Comment pourriez-vous vous attendre à ce que les couleurs soient préservées?)
mpontillo

1
Eh bien, c'est ce qu'il fait. Ajoute des codes de coloration bash. Si vous écrivez le fichier dans la console, il affiche les couleurs.
ralphtheninja

1
@RoR Il faudrait mettre quelque chose au milieu pour convertir les codes de couleur bash au format rtf.
ralphtheninja

3
Notepad ++ peut mettre en évidence les fichiers diff. (Les extensions * .diff sont automatiquement mises en surbrillance, sinon changent Language --> D --> Diff.) Si vous n'aimez pas les couleurs par défaut, changez-les dans Settings --> Style Configurator --> Diff. Pour copier coller avec des couleurs, vous pouvez utiliser un plugin (par exemple NppExport) qui permet d'exporter / copier en RTF ou HTML.
Nikita G.

3
git diff AB> foo.diff (De nombreux éditeurs ouvriront le fichier avec les couleurs car le fichier est un fichier .diff)
zeusstl

34

Enregistrez le fichier avec une extension .diff et ouvrez-le dans Notepad ++ ou Vim ou SublimeText.

git diff > 20150203_someChanges.diff

Merci @Monsingor


Je pense que vous avez oublié '>' au milieu, cela ne fonctionne pas
GoGoris

20

Ouvrez le fichier diff de sortie dans Sublime Text 2 . Il montre les couleurs différentes.


1
Vous devrez peut-être modifier la syntaxe en diff pour activer la mise en évidence appropriée au cas où le fichier diff aurait une extension différente de * .diff. (via Affichage -> Syntaxe -> Diff).
Nikita G.

Cela ne met pas en évidence diff.txtpour moi, même avec "Diff" détecté automatiquement dans le coin inférieur droit.
Nakilon le

11

Pour développer la réponse de @ Gabe.

Vous pouvez diriger la sortie vers un script bash de convertisseur ansi vers html et diriger cette sortie vers un fichier html:

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

bien sûr, le html peut être consulté par n'importe quel navigateur afin que la sortie puisse être lue dans Windows, etc.

Le code ansi2html est ici: http://www.pixelbeat.org/scripts/ansi2html.sh


ne fonctionne pas je reçois: gawk: cmd. line: 25: (FILENAME = - FNR = 1) fatal: tentative d'utilisation du tableau `a (from span) 'dans un contexte scalaire
Tim

2
Obtenez Homebrew et exécutez brew install gawk. Vous aurez également besoin brew install gnu-sed.
Geoffrey Booth

exactement ce que je veux, génial!
Keith

La bibliothèque python ansi2html l'a fait pour moi github.com/ralphbean/ansi2html . pip installable et fonctionne exactement comme le script bash dans cette réponse. N'oubliez pas de remplacer "./ansi2html.sh" par "ansi2html".
Nagasaki



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

Les différences extraites dans les fichiers '* .txt' sont facilement lues par SublimeText2 sans qu'il soit nécessaire de les définir (via Affichage -> Syntaxe -> Diff).


git remote rm remotes/b/masterpour réinitialiser la branche à son état d'origine.
Abhijeet

1

pour permettre à tout texte de terminal colorisé ... git diff ou tout autre ... d'être visible depuis un navigateur

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

installer en ahautilisant ci-dessus puis émettre

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

firefox  ~/cool_colorized.html

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.