¿Cómo determino la encoding de files?

¿Hay un command git que devuelva la encoding de file como un file en Linux? Eso describe completamente mi problema. Intenté search en Google pero no encontré nada.

Git no tiene idea de la encoding de un file (almacenado como un blob, es decir, como datos binarys arbitrarios).
Consulte " ¿Cuál es el formatting de un git" blob "? ".

El file de command todavía se puede usar después de un git checkout .
O canalizado después de un espectáculo de git para leer el contenido de un file específico.

Si está tratando de convertir terminaciones de línea (CRLF (Windows) a estándares Linux o solo), puede intentar algo como esto, respondido por @VonC aquí .

O si desea convertir la encoding de los files (es decir, ISO-8859-1 a UTF-8) y usted es un usuario de Linux, puede intentar esto , respondido por @Celada

Puedes hacer esto con

 git filter-branch 

La idea es que tengas que cambiar la encoding de los files en cada commit, reescribiendo cada commit sobre la marcha. Primero, escriba un script que cambie la encoding de cada file en el repository. Podría verse así:

 #!/bin/sh find . -type f -print | while read f; do mv -i "$f" "$f.recode.$$" iconv -f iso-8859-1 -t utf-8 "$f" rm -f "$f.recode.$$" done 

Entonces usa

 git filter-branch 

ejecutar este script una y otra vez, una vez por commit:

 git filter-branch --tree-filter /tmp/recode-all-files HEAD 

donde / tmp / recode-all-files es el script anterior. Inmediatamente después de que el repository se haya actualizado recientemente de CVS, es probable que solo tenga una twig en git con un historial lineal de nuevo. Si tiene varias twigs, puede necesitar mejorar el command git filter-branch para editar todas las confirmaciones ".