Salida de Git diff para conservar el color del archivo

123

¿Es posible hacer git diffy guardar la salida en un archivo con el color de alguna manera?

Sé cómo hacerlo git diff > filename.rtf, lo que se guarda en un archivo, pero me gustaría conservar el color.

RoR
fuente
2
Puede convertir a html con color: stackoverflow.com/questions/2013091/coloured-diff-to-html
Gabe Moothart
5
Notepad ++ resaltará el archivo si lo guarda con la extensión .diff.
Monseñor

Respuestas:

146

Tratar:

git diff --color > foo.txt

Luego, problema posterior:

cat foo.txt

O:

less -R foo.txt
ralphtheninja
fuente
2
@RoR, el "galimatías" de una persona son los códigos de color de otra persona (bueno, terminal). ;-) Lo probé y funciona; el color se conserva si catel archivo de la línea de comandos. (¿De qué otra manera esperaría que se conservaran los colores?)
mpontillo
1
Bueno, eso es lo que hace. Agrega códigos de coloración de bash. Si captura el archivo en la consola, muestra los colores.
ralphtheninja
1
@RoR Tendría que poner algo en el medio para convertir los códigos de color de bash al formato rtf.
ralphtheninja
3
Notepad ++ puede resaltar archivos diff. (Las extensiones * .diff se resaltan automáticamente; de ​​lo contrario, cambian Language --> D --> Diff). Si no le gustan los colores predeterminados, cámbielos Settings --> Style Configurator --> Diff. Para copiar y pegar con colores, puede utilizar un complemento (por ejemplo NppExport) que permite exportar / copiar en RTF o HTML.
Nikita G.
3
git diff AB> foo.diff (muchos editores abrirán el archivo con los colores porque el archivo es un archivo .diff)
zeusstl
34

Guarde el archivo con una extensión .diff y ábralo en Notepad ++ o Vim o SublimeText.

git diff > 20150203_someChanges.diff

Gracias @Monsingor

ironhyde
fuente
Creo que olvidaste '>' en el medio, esto no funciona
GoGoris
20

Abra el archivo de diferencias de salida en Sublime Text 2 . Muestra los colores diferenciales.

Julien
fuente
1
Es posible que deba cambiar la sintaxis a diff para habilitar el resaltado adecuado en caso de que el archivo diff tenga una extensión diferente a * .diff. (a través de Ver -> Sintaxis -> Diferenciar).
Nikita G.
No resalta diff.txtpara mí, incluso con "Diff" detectado automáticamente en la esquina inferior derecha.
Nakilon
11

Para ampliar la respuesta de @ Gabe.

Puede canalizar la salida a un script bash del convertidor de ansi a html y dirigir esa salida a un archivo html:

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

por supuesto, HTML puede ser visto por cualquier navegador, por lo que la salida se puede leer en Windows, etc.

El código ansi2html está aquí: http://www.pixelbeat.org/scripts/ansi2html.sh

sk8asd123
fuente
no funciona, obtengo: gawk: cmd. línea: 25: (FILENAME = - FNR = 1) fatal: intento de usar la matriz `a (from span) 'en un contexto escalar
Tim
2
Obtén Homebrew y corre brew install gawk. También necesitarás brew install gnu-sed.
Geoffrey Booth
exactamente lo que quiero, genial!
Keith
La biblioteca de python ansi2html lo hizo por mí github.com/ralphbean/ansi2html . pip instalable y funciona exactamente como el script bash en esta respuesta. No olvide reemplazar "./ansi2html.sh" por "ansi2html".
Nagasaki45
8

Archivos de colores Vim que contienen git diff maravillosamente.

git diff

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

SublimeText2 puede leer fácilmente las diferencias extraídas en archivos '* .txt' sin necesidad de configurarlas (a través de Ver -> Sintaxis -> Diferenciar).

Abhijeet
fuente
git remote rm remotes/b/masterpara restablecer la rama a su estado original.
Abhijeet
1

para permitir que cualquier texto de terminal coloreado ... git diff o cualquier otro ... sea visible desde un navegador

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

instalar ahausando arriba y luego emitir

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

firefox  ~/cool_colorized.html
Scott Stensland
fuente
0

Puede cargarlo en GitHub y proporcionar un enlace a la confirmación correspondiente.

Choylton B. Higginbottom
fuente