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.

RoR
la source
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
ralphtheninja
la source
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

ironhyde
la source
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.

Julien
la source
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

sk8asd123
la source
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
8

Fichiers de couleurs Vim contenant magnifiquement git diff.

git diff

Rose Perrone
la source
3

J'ai trouvé une réponse ici: Sortie couleur d'une commande git spécifique .

Vous pouvez passer -c color.ui=alwaysà n'importe quelle gitcommande et elle continuera à colorier lors de la redirection. Par exemple:git -c color.ui=always status > file

Amaslenn
la source
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).

Abhijeet
la source
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
Scott Stensland
la source
0

Vous pouvez télécharger sur GitHub et fournir un lien vers le commit concerné.

Choylton B. Higginbottom
la source