2011-11-30 8 views
5

그래도이 코드를 재현 할 수있는 확실한 방법은 없지만이 문제가 잘 알려진 경우 어쨌든 물어보십시오. 무슨 일 자식은 종종이 같은 충돌을 생성하는 것입니다 : git이 때때로 추가 된 행을 변경된 행으로 표시합니다 (추가 된 코드 부분에 빈 충돌이 있음).

<<<<<<< HEAD 
    } // action_do_add 
======= 
    } // action_do_add 
...lots of code here... 
>>>>>>> some_branch 

그래서 대신에 단순히 코드의 새로운 조각을 추가 것을 알아 차리고는, 자식은 내가 대신 전체 라인을 수정할 생각한다. 이것은 가끔 파일의 중간에서 발생하지만 대개는 파일의 끝에서 발생합니다. 내 짐작으로는 줄 끝 문자와 관련이있을 수 있지만 아직 그 확인을 위해 테스트를 실행해야한다는 것입니다. 누구든지 동일한 문제가 있었습니까? 그렇다면 어떻게 해결합니까?

+0

아마도 공간 차이가 있습니까? –

+0

나는 그것을 검사했고 그것이 사실이 아닌 것처럼 보였다. 두 줄의 공백 수는 같기 때문에 한 줄 끝 부분에 숨겨진 공간이있는 것처럼 보이지 않습니다. – Eugene

+0

다른 라인 결말은 무엇입니까? 이 줄은 16 진수 편집기에서 동일하게 보입니까? – Rudi

답변

5

병합 할 때 git는 문맥에서 차이점 을 확인합니다. 이 코드를 고려하십시오

한 지점이 방법 a 뭔가를 변경 (또는 그것을 삭제), 또 다른 지점은, 당신은 여전히 ​​두 차이점에 대한 방법 b의 상황이 방법 c 뭔가를 변경 (또는 삭제됩니다)
def a 
    do_something_a 
end 

def b 
    do_something_b 
end 

def c 
    do_something_c 
end 

. 이것이 변경 사항이 충돌없이 병합되는 이유입니다.

그러나이 같은 경우 : 당신 이의 대응 상황을 돌파하기 때문에 하나 하나 개의 지점에서의 방법과 다른 지점에서 다른 편집 할 때

def a 
    do_something_a 
end 

def c 
    do_something_c 
end 

당신이 가장 가능성이 충돌로 끝날 것 diff 다른 지점에 있습니다.

그 이유는 파일 끝에 더 자주 발생하기 때문입니다. 위의 내용은이지만 그 아래에는 아무 것도 없기 때문에 더 자주 발생합니다.