sirve qué que para modelo eliminar ejemplo archivos archivo git binary

que - qué es un sha 1 en github



¿Por qué Git trata este archivo de texto como un archivo binario? (9)

Me pregunto por qué git me dice esto:?

$ git diff MyFile.txt diff --git a/MyFile.txt b/MyFile.txt index d41a4f3..15dcfa2 100644 Binary files a/MyFile.txt and b/MyFile.txt differ

¿No son archivos de texto?

He comprobado los .gitattributes y está vacío. ¿Por qué recibo este mensaje? No puedo obtener diffs como lo uso para más

ADICIONAL:

Me he dado cuenta de que hay un @ en los permisos del archivo, ¿qué es esto? Podría ser ésta la razón?

$ls -all drwxr-xr-x 5 nacho4d staff 170 28 Jul 17:07 . drwxr-xr-x 16 nacho4d staff 544 28 Jul 16:39 .. -rw-r--r--@ 1 nacho4d staff 6148 28 Jul 16:15 .DS_Store -rw-r--r--@ 1 nacho4d staff 746 28 Jul 17:07 MyFile.txt -rw-r--r-- 1 nacho4d staff 22538 5 Apr 16:18 OtherFile.txt


Acabo de pasar varias horas repasando todo lo que figura en esta lista tratando de descubrir por qué uno de los proyectos de prueba en mi solución no agregaba ninguna prueba al explorador.

Resultó en mi caso que de alguna manera (probablemente debido a un pobre git se fusionó en alguna parte) VS había perdido una referencia del proyecto por completo. Todavía estaba construyendo pero noté que solo construyó las dependencias.

Luego noté que no aparecía en la lista de dependencias en sí, así que quité y volví a agregar el proyecto de prueba y todas mis pruebas finalmente se mostraron.


Con esta útil respuesta , puede preguntar directamente a Git por qué trata un archivo de una manera particular:

cd directory/of/interest file *

Produce resultados útiles como este:

$ file * CR6Series_stats resaved.dat: ASCII text, with very long lines, with CRLF line terminators CR6Series_stats utf8.dat: UTF-8 Unicode (with BOM) text, with very long lines, with CRLF line terminators CR6Series_stats.dat: ASCII text, with very long lines, with CRLF line terminators readme.md: ASCII text, with CRLF line terminators


Estaba teniendo este problema donde Git GUI y SourceTree trataban los archivos Java / JS como binarios y por lo tanto no podían ver la diferencia

La creación de un archivo llamado "attributes" en la carpeta .git / info con el siguiente contenido resolvió el problema

*.java diff *.js diff *.pl diff *.txt diff

Si desea realizar este cambio para todos los repositorios, puede agregar archivos de atributos en la siguiente ubicación $ HOME / .config / git / attributes


Git incluso determinará que es binario si tienes una línea súper larga en tu archivo de texto. Rompí una cadena larga, convirtiéndola en varias líneas de código fuente, y de repente el archivo pasó de ser ''binario'' a ser un archivo de texto que pude ver (en SmartGit).

Por lo tanto, no continúe escribiendo demasiado a la derecha sin presionar ''Enter'' en su editor; de lo contrario, Git pensará que ha creado un archivo binario.


He tenido el mismo problema Encontré el hilo cuando busco la solución en Google, pero todavía no encuentro ninguna pista. Pero creo que encontré la razón después de estudiar, el siguiente ejemplo explicará claramente mi pista.

echo "new text" > new.txt git add new.txt git commit -m "dummy"

por ahora, el archivo new.txt se considera como un archivo de texto.

echo -e "newer text/000" > new.txt git diff

obtendrás este resultado

diff --git a/new.txt b/new.txt index fa49b07..410428c 100644 Binary files a/new.txt and b/new.txt differ

y prueba esto

git diff -a

llegarás abajo

diff --git a/new.txt b/new.txt index fa49b07..9664e3f 100644 --- a/new.txt +++ b/new.txt @@ -1 +1 @@ -new file +newer text^@


Si no ha configurado el tipo de archivo, Git intentará determinarlo automáticamente y un archivo con líneas muy largas y tal vez algunos caracteres anchos (por ejemplo, Unicode) se tratará como binario. Con el archivo .gitattributes puede definir cómo interpreta Git el archivo. Establecer manualmente el atributo diff le permite a Git interpretar el contenido del archivo como texto y hará una diferencia habitual.

Simplemente agregue un .gitattributes a su carpeta raíz de repositorio y establezca el atributo diff en las rutas o archivos. Aquí hay un ejemplo:

src/Acme/DemoBundle/Resources/public/js/i18n/* diff doc/Help/NothingToSay.yml diff *.css diff

Si desea verificar si hay atributos establecidos en un archivo, puede hacerlo con la ayuda de git check-attr

git check-attr --all -- src/my_file.txt

Otra buena referencia sobre los atributos de Git se puede encontrar here .


Simplemente significa que cuando git inspecciona el contenido real del archivo (no sabe que una extensión determinada no es un archivo binario, puede usar el archivo de atributos si desea contarlo explícitamente, consulte las páginas man).

Después de haber inspeccionado los contenidos del archivo, ha visto cosas que no están en los caracteres ascii básicos. Siendo UTF16, espero que tenga caracteres "divertidos", por lo que cree que es binario.

Hay formas de decirle a git si tiene internacionalización (i18n) o formatos de caracteres extendidos para el archivo. No estoy lo suficientemente informado sobre el método exacto para configurarlo; es posible que necesites RT [Completo] M ;-)

Editar: una búsqueda rápida de SO encontró can-i-make-git-recognize-a-utf-16-file-as-text que debería darte algunas pistas.


Tuve el mismo problema después de editar uno de mis archivos en un nuevo editor. Resulta que el nuevo editor utilizó una codificación diferente (Unicode) que mi editor anterior (UTF-8). Así que simplemente le dije a mi nuevo editor que guardara mis archivos con UTF-8 y luego git mostró mis cambios correctamente otra vez y no lo veía como un archivo binario.

Creo que el problema fue simplemente que git no sabe cómo comparar archivos de diferentes tipos de codificación. Entonces, el tipo de codificación que usas realmente no importa, mientras siga siendo consistente.

No lo probé, pero estoy seguro de que si hubiera confirmado mi archivo con la nueva codificación Unicode, la próxima vez que realice cambios en ese archivo habría mostrado los cambios correctamente y no los habría detectado como binarios, ya que entonces habría estado comparando dos archivos codificados en Unicode, y no un archivo UTF-8 en un archivo Unicode.

Puede usar una aplicación como Notepad++ para ver y cambiar fácilmente el tipo de codificación de un archivo de texto; Abra el archivo en Notepad ++ y use el menú Codificación en la barra de herramientas.


Tuvimos este caso en el que un archivo .html se consideraba binario cada vez que intentábamos realizar cambios en él. Muy poco atractivo para no ver diferencias. Para ser sincero, no revisé todas las soluciones aquí, pero lo que funcionó para nosotros fue el siguiente:

  1. Se eliminó el archivo (realmente se movió a mi Escritorio) y se cometió la git deletion . Git dice Deleted file with mode 100644 (Regular) Binary file differs
  2. Vuelva a agregar el archivo (en realidad lo moví de mi escritorio al proyecto). Git dice New file with mode 100644 (Regular) 1 chunk, 135 insertions, 0 deletions El archivo ahora se agrega como un archivo de texto normal

De ahora en adelante, cualquier cambio que realice en el archivo se verá como una diferencia de texto regular. También puedes aplastar estas confirmaciones (1, 2 y 3 siendo el cambio real que realizas) pero prefiero poder ver en el futuro lo que hice. Los aplastamientos 1 y 2 mostrarán un cambio binario.