2012-06-22 15 views
55

Avere un problema con un progetto di medie dimensioni in cui i file di progetto di Visual Studio continuano ad avere problemi a causa del loro trattamento come testo e fusione. Mi piacerebbe solo impostare il file come binario in modo che git non fonderà mai automaticamente questi file.Come faccio a rendere Git un file come binario?

C'è un modo per farlo?

+2

Ma visiva I file di progetto di Studio sono file di testo e devono essere uniti? –

+0

@CharlesBailey Si fonderanno periodicamente nel peggior modo possibile, rovinando tutte le tue build. Non voglio giocare con l'XML, voglio che mi chieda di aggiungere manualmente nuovi file o magari anche di eseguire uno strumento che differisce da XML e sa come gestirlo correttamente. –

+0

@ michael.bartnett: Solo se si incasina l'unione, sicuramente? –

risposta

77

Sì, utilizzando attributes. Mettete qualcosa di simile nel file .gitattributes (crearlo se non esiste):

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

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

Se si vuole essere ancora in grado di vedere il diff, è possibile utilizzare:

*.sln -merge -text 

In questo modo, i file *.sln non saranno fusi, non hanno EOL normalizzata, ma intanto diff-grado.

+1

dov'è questo file? – neves

+0

@neves Ovunque si trova un file gitignore, come da documentazione fornita dal collegamento nella risposta data. –

+0

@neves: devi crearne uno, localmente nel tuo repository o globalmente come ad es. '~/.gitattributes' e quindi eseguendo' git config --global core.attributesfile ~/.gitattributes' vedere http://stackoverflow.com/questions/28026767/where-should-i-place-my-global-gitattributes -file –

2

È necessario definire gli attributi di file binario nel file di .gitattributes (crearlo se non esiste) mettendo queste linee in esso, per evitare che si gestirlo come file di testo 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 
Problemi correlati