2016-09-07 2 views
-1

소스 제어를 위해 GIT와 함께 TFS를 사용하고 있습니다.Visual Studio 2013 Ultimate에서 GIT의 이진 파일 병합

최신 버전을 가져 오려고하지만 동기화되지 않은 dll 파일에 문제가 있습니다.

나는 다음을 수행했다.

팀 탐색기 메뉴에서 최신 커밋을 가져 오려고했습니다. 나는 그 때 메시지를 얻는다;

오류가 발생했습니다 : 33 명 않은 변경 병합

덮어 쓸 것입니다 그래서 난 다음 다른 커밋 실행하고 모든 제외 된 파일을 포함. DLL 등이 포함되었습니다. 팀 탐색기로 이동하여 변경했습니다. -> 변경

그런 다음 추적되지 않은 33 개의 파일을 추가하고 로컬에서 커밋했습니다.

다음으로 동기화를 클릭 한 다음 들어오는 커밋 메뉴에서 가져옵니다.

나는 그 때 메시지를 얻는다;

당겨서 충돌이 발생했습니다. 갈등을 해결하고 결과를 저지하십시오.

'충돌 해결'링크를 클릭하면 77 개의 파일 목록 (dll csproj 및 pdb 파일)이 표시됩니다. 아래 스크린 샷을 참조하십시오.

team explorer on merge

그러나, 나는 클릭하면 지역 유지하거나 아무 일도 발생하지 원격 링크를 유지합니다. 내가 병합 버튼을 선택하면

내가

git popup 2

누군가가 나를 안내 할 수 있습니다 메시지가 어떻게이 문제를 해결하는거야?

답변

2

자식 저장소 do not 잘 처리 바이너리. 힘내는 텍스트 파일을 위해 최적화되어 있으며, 효과적으로 diff 및 압축 할 수 있습니다. 바이너리는 차이가 나고 압축 될 수 없으므로 저장소가 부 풀리게됩니다. Git은 새 버전을 커밋 할 때마다 전체 바이너리를 저장해야합니다. 이로 인해 repo가 ​​대량으로 복제되고 분기가 느려지고 분기를 전환 할 때 커다란 부정적 영향을 미치게됩니다.

어셈블리 참조를 처리하는 올바른 방법은 패키지 관리자를 사용하여 소스 컨트롤에 커밋되지 않은 빌드 타임에 바이너리를 복원 할 수있게하는 것입니다. 또한 이는 어셈블리 버전 관리에 대한 유연성을 제공합니다.

이미지와 같은 다른 유형의 바이너리의 경우 Git LFS를 사용하면 저장소를 기울여서 쉽게 압축 할 수 있고 압축 할 수있는 텍스트로만 구성하면서도 효과적인 Blob 저장소를 바이너리에 사용할 수 있습니다. TFS 2015 Update 2는 Git LFS를 지원하지만 이전 버전에서는 그렇지 않습니다.

(당신이 아직없는 경우) 확실히binobj 폴더를 소스 제어에없는 있는지 확인하기 위해 .gitignore 파일을 설정해야 말했다; 절대적으로 소스 제어에 있어서는 안됩니다. 그것은 말도 안돼. 과거 기록을 오염시키는 오래된 커밋이있는 경우 BFG와 같은 도구를 사용하여 기록을 삭제할 수 있지만 Git repo의 기록을 다시 작성하므로 다른 팀 구성원에게 문제가 될 수 있습니다. 그것은 당신이해야 할 일이지만 아무도 아무런 문제가 발생하지 않도록 팀의 나머지 팀과 조심스럽게 조정되어야합니다.

+0

Daniel, 고맙습니다. 이전 커밋으로 되돌리고 코드를 다시 커밋하여 문제를 해결할 수있었습니다. –

1

dll을 소스 제어로 확인하지 마십시오.

+0

그럼 어떻게 문제를 해결할 수 있습니까? 이후 got.ignore –

+0

https://docs.nuget.org/ – thekbb

+0

에 인형을 추가했습니다. 그럼 너게이 상관합니까 ?? –