2012-06-22 9 views
55

Problem z projektem średniej wielkości, w którym pliki projektów w studiu graficznym mają problemy z git traktując je jako tekst i scalanie. Chciałbym ustawić plik jako plik binarny, aby git nie łączył automatycznie tych plików nigdy.Jak uczynić Git traktować plik jako plik binarny?

Czy istnieje sposób, aby to zrobić?

+2

Ale wizualna Pliki projektu Studio to pliki tekstowe i czy trzeba je scalić? –

+0

@CharlesBailey Będą okresowo scalać w najgorszy możliwy sposób, wkręcając wszystkie twoje kompilacje. Nie chcę bawić się z XML, chcę, aby poprosił mnie o ręczne dodanie nowych plików lub nawet o uruchomienie narzędzia do porównywania XML, które wie, jak poprawnie to zrobić. –

+0

@ michael.bartnett: Tylko jeśli zepsułeś połączenie, z pewnością? –

Odpowiedz

77

Tak, używając attributes. Umieścić coś takiego w pliku .gitattributes (utwórz go, jeśli nie istnieje):

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

Tutaj binary is actually a predefined macro, odpowiednik -diff -merge -text.

Jeśli chcesz nadal będą mogli zobaczyć diff, można użyć:

*.sln -merge -text 

ten sposób, *.sln pliki nie zostaną połączone, nie ma EOL znormalizowane, ale w międzyczasie diff-stanie.

+1

gdzie jest ten plik? – neves

+0

@neves Wszędzie można zlokalizować plik gitignore, zgodnie z dokumentacją dostarczoną przez link w podanej odpowiedzi. –

+0

@neves: musisz go utworzyć lokalnie w swoim repo lub na całym świecie, np. '~/.gitattributes', a następnie uruchom' git config --global core.attributesfile ~/.gitattributes' patrz http://stackoverflow.com/questions/28026767/where-should-i-place-my-global-gitattributes -plik –

2

Należy zdefiniować atrybuty pliku binarnego w pliku .gitattributes (utwórz go, jeśli nie istnieje), umieszczając te linie w nim, aby zapobiec jej obsługiwać go jako plik diff tekst:

# 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