2016-10-18 3 views
2

a.h, aImpl.c, b.h, bImpl.c 및 main.c의 5 개 파일에는 두 개의 헤더 파일이 포함되어 있습니다.git merge가 모든 것을 의미하는 충돌이 없습니까?

Branch A: 
    //File a.h 
    +extern int x; 
    //File aImpl.C 
    +int x=1 
Branch B: 
    //File b.h 
    +extern int x; 
    //File bImpl.C 
    +int x=2 

파일이 충돌하지 않지만 실제로는 전역 변수가 충돌합니다. 이 경우 병사가 어떻게 처리할까요?

+8

git은 프로그래밍 언어를 이해하지 못합니다. 모호성없이 변경 내용을 적용 할 수 있음을 단순히 알고 있습니다. – xaxxon

+0

git이 디버깅 코드를 담당합니까? 나는 차라리 diffs에 관심이 있다고 생각 했단 말인가? –

+3

병합 후 푸시하기 전에 코드를 컴파일해야하는 1001 가지 이유. – UKMonkey

답변

4

힘내에 내장 된 병합은 텍스트 기반으로 만 작동합니다. 구문 적 또는 의미 론적 오류는 Git과 관련이 없습니다. 즉, 병합이 성공하고 코드가 실패합니다. 망할 놈이 아니라 당신에게 달렸습니다.

Git의 후크를 사용하여 약간의 도움을 얻을 수 있습니다. 예를 들어 일부 테스트가 통과 될 때까지 커밋을 사용 중지 할 수 있습니다. 그러나 이러한 훅은 각 사용자에게 맡겨두고 자유롭게 사용할 수 있습니다. 커밋은 작업 트리의 내용이 아닌 색인의 내용 (준비 영역)에서 이루어지기 때문에 올바른 후크 작성은 다소 어렵습니다.