Git이 파일을 바이너리로 취급하게하려면 어떻게해야합니까?


104

Visual Studio 프로젝트 파일이 텍스트로 처리하고 병합하여 문제가 계속되는 중간 크기 프로젝트에 문제가 있습니다. git이 이러한 파일을 자동으로 병합하지 않도록 파일을 바이너리로 설정하고 싶습니다.

이 작업을 수행하는 방법이 있습니까?


2
하지만 Visual Studio 프로젝트 파일은 텍스트 파일이며 병합해야합니까?
CB Bailey

1
@CharlesBailey 그들은 주기적으로 가능한 최악의 방법으로 병합하여 모든 빌드를 망칠 것입니다. 저는 XML을 조작하고 싶지 않습니다. 수동으로 새 파일을 추가하도록 요청하거나 제대로 처리하는 방법을 알고있는 XML 비교 도구를 실행할 수도 있습니다.
michael.bartnett

1
@ michael.bartnett : 병합을 엉망으로 만드는 경우에만 확실히?
CB Bailey

1
@CharlesBailey 물론 수동으로 병합하는 경우 문제가되지 않습니다. 하지만 수동으로 병합해야하는 것은 아닙니다. 일반적으로 빌드 항목 추가 / 제거 / 편집 ... 완전히 자동 병합이 가능하지만 일반적인 diff per line 메서드는 아닙니다. 개념에 대한 자세한 내용은 이 프레젠테이션 을 확인하십시오 .
michael.bartnett 2013

@ michael.bartnett : 그러면 더 나은 병합 드라이버를 설정하십시오. 제가 (10 개월 전) 내놓은 요점은 프로젝트 파일이 병합 될 수 있고 병합되어야한다는 것입니다. 개인적으로 저는 불필요한 작업처럼 보이는 손으로하는 것보다 합리적인 기계 시도를 수정하는 것을 훨씬 선호합니다.
CB Bailey

답변:


135

예, 속성을 사용 합니다 . .gitattributes파일 에 다음과 같이 넣으십시오 (존재하지 않는 경우 작성하십시오).

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

여기에 binary미리 정의 된 매크로 실제로 동등은 -diff -merge -text.

여전히 차이를 볼 수 있도록하려면 다음을 사용할 수 있습니다.

*.sln -merge -text

이렇게하면 *.sln파일이 병합되지 않고 eol이 정규화되지 않고 비교 가능합니다.


1
이 파일은 어디에 있습니까?
neves

@neves Everywhere 주어진 답변의 링크에서 제공하는 문서에 따라 gitignore 파일을 찾을 수 있습니다.
마이클 와일드

4
@neves : 리포지토리에서 로컬로 만들거나 예를 들어 전역으로 ~/.gitattributes만든 다음 git config --global core.attributesfile ~/.gitattributessee stackoverflow.com/questions/28026767/…
jan-glx

이러한 파일이 자동으로 병합되지 않으면 어떻게됩니까? 하나의 버전을 선택 했습니까? 아니면 수동으로 병합해야합니까?
ClydeTheGhost

1
@ClydeTheGhost 당신은 하나를 선택해야합니다.
마이클 와일드

6

이진 파일 속성을 파일에 정의해야 .gitattributes합니다 (존재하지 않는 경우 생성).

# 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   
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.