2012-06-22 17 views
55

Tiene un problema con un proyecto de tamaño medio en el que los archivos del proyecto de estudio visual siguen teniendo problemas debido a que los tratan como texto y se fusionan. Me gustaría simplemente configurar el archivo como binario para que git no fusione automáticamente estos archivos.¿Cómo hago que Git trate un archivo como binario?

¿Hay alguna manera de hacerlo?

+2

Pero Visual ¿Los archivos de proyectos de Studio son archivos de texto y deben fusionarse? –

+0

@CharlesBailey Se fusionarán periódicamente de la peor manera posible, arruinando todas tus construcciones. No quiero jugar con el XML, quiero que me pida que agregue manualmente nuevos archivos o incluso que ejecute una herramienta de diferenciación de XML que sepa cómo manejarlo correctamente. –

+0

@ michael.bartnett: ¿Solo si estropeas la fusión, seguramente? –

Respuesta

77

Sí, usando attributes. Poner algo como esto en su archivo .gitattributes (créelo si no existe):

*.sln binary 
*.suo binary 
*.vcxproj binary 

Aquí binary is actually a predefined macro, equivalente a -diff -merge -text.

Si desea seguir siendo capaz de ver el diff, puede utilizar:

*.sln -merge -text 

De esta manera, los archivos *.sln no se fusionarán, no tienen EOL normalizada, pero mientras tanto diff-poder.

+1

¿dónde está este archivo? – neves

+0

@neves En todas partes se puede ubicar un archivo de gitignore, según la documentación provista por el enlace en la respuesta dada. –

+0

@neves: tienes que hacer una, ya sea localmente en tu repositorio o globalmente como p. '~/.gitattributes' y luego ejecutando' git config --global core.attributesfile ~/.gitattributes' see http://stackoverflow.com/questions/28026767/where-should-i-place-my-global-gitattributes -archivo –

2

Debe definir los atributos de archivo binario en el archivo de .gitattributes (créelo si no existe) al poner estas líneas en el mismo, para evitar que manejarlo como archivo de texto diff:

# Define binary file attributes. 
# - Do not treat them as text. 
# - Include binary diff in patches instead of "binary files differ." 
*.sln  -text diff 
*.suo  -text diff 
*.vcxproj -text diff 
*.gif  -text diff 
*.gz  -text diff 
*.ico  -text diff 
*.jpeg -text diff 
Cuestiones relacionadas