2014-07-16 2 views
0

타사 공급 업체의베이스 라인에 사용하는 마스터 브랜치와 우리 기관의 사용자 정의 수정을위한 브랜치가 있습니다. 우리는 이것을 잠시 사용했고 두 가지 모두에 커밋이 꽤 있습니다. 일반적으로 기준선을 업데이트 할 때 상황은 원활하게 진행되며 40,000 개의 Pro * C 파일에서 한 두 번의 충돌이 발생하며 작고 손쉽게 해결할 수 있습니다.하나의 브랜치를 다른 브랜치와 병합 할 때 힘내 병합이 어려움

최신 기준선이 지난 주에 제공되었으며, 나는 그것을 시험해보기 위해 주위를 돌았습니다. 나는 그것을 마스터 브랜치에 맡겼다. 그리고 커스텀 브랜치에 병합 할 때, 충돌이 있다고 말한다. 파일을 열고 검색 할 때 "< < < < < < < HEAD"와 (과) 일치하는 990 개가 있음을 알립니다.

새베이스 라인에는 변경 사항이 거의 없어야하며, 대부분은 알고리즘 적으로 해결하기 위해 경미하고 쉽게해야합니다. 파일의 맨 위에는 다음과 같이 표시됩니다.

<<<<<<< HEAD 
#define TM_ON_STARTUP tmInitGlobS_szrtrtc 
======= 
#define TM_ON_STARTUP tmInitGlobS_szrtrtc 
>>>>>>> master 

수퍼 라이트는 공백을 나타내며 동일하게 나타납니다. 많은 사람들이 이것과 같습니다. 몇 그러나, 약간의 공백을 변경해야합니까 (하드 어쩌면 그들 중 세 번째는, 말할) :

이 하나에서
<<<<<<< HEAD 
/* Solution: Heading is changed to 'Current Program'.     */ 
======= 
/* Solution: Heading is changed to 'Current Program'.     */ 
>>>>>>> master 

는, 마스터는 주석의 끝에서 탭이 있습니다. 따라서 차이점을 발견했음을 알 수 있지만 변경 사항을 적용하지 못한 이유는 이해할 수 없습니다 (탭이 있는지 여부는 상관하지 않습니다).

왜 이렇게 했습니까? 처음에는 두 커미션 사이에 줄 바꿈 불일치가있을 수 있다고 생각하여 최신 커밋을 도입했을 수 있습니다. 그럴 것 같지 않습니다.

이 작업은 Sourcetree를 사용하든, 또는 msysgit으로 다시 전환하여 (동일한 충돌 횟수) 사용할 수 있습니다.

누구나 내가이 일을 시작하기 위해 망쳐 놓은 것에 대해 통찰력을 줄 수 있습니까? 동작을 디버깅 할 때 무엇을 확인해야합니까? 내가 수동으로 작성하고 이들을 수동으로 해결해야합니까? (모두 한 줄 충돌이 아님)?

답변

1

공백 차이를 무시할 수 있습니다. git merge master --strategy=recursive -Xignore-all-space

+0

이것은 옵션으로 보이지 않습니다. https://www.kernel.org/pub/software/scm/git/docs/git-merge.html –

+0

실제 명령은 git merge master와 같아 보인다. master --strategy = recursive -Xignore-all-space (몇 가지 eol 공간 만 포함). 팁 주셔서 감사합니다 ... 지금은 관리 할 수있는 15 가지 충돌에 이릅니다. –

+0

더 자세한 구문을 반영하기 위해 내 답변이 업데이트되었습니다.;) : –