2017-11-05 1 views
0

정확히 언제 병합 충돌이 발생하는지 궁금합니다. 내 가정은 파일이 두 분기에서 수정되었을 때 발생한다는 것입니다. 좀 더 자세하게 말하자면, 하나의 브랜치에서 파일이 수정되었지만 다른 브랜치에서는 수정되지 않았다면, "수정 된"버전이 사용될 것입니다 ("이전 버전"은 "새로운"버전으로 대체됩니다).git에서 정확히 병합 충돌이 발생합니까?

두 개의 "새로운"버전 (두 개의 분기에서 오는)이있는 경우 git은 사용할 버전을 모르기 때문에 수동 병합이 필요합니다.

그러나 내 이해에 대해서는 확신 할 수 없습니다. 동일한 파일이 두 가지 지점에서 모두 수정 된 경우에도 서로 충분히 멀리 떨어진 곳에 수정을 수행하면 병합 충돌이 발생하지 않는다고 생각할 수 있습니다.

+2

가능한 중복 https://stackoverflow.com/questions/42693608/when-exactly-does-a- git-merge-conflict-arise) – 1615903

답변

2

파일의 한 줄 (또는 여러 줄)이 한 번에 여러 사람이 동시에 편집 할 때 발생하는 병합 충돌입니다. 꼭 2 가지 다른 가지에 있어야 할 필요는 없습니다.

첫 번째 변경 내용을 적용한 후에 변경 내용을 적용하려고 시도하는 다른 사람이 병합 충돌시 비틀어집니다.

기본적으로 git 시스템은 병합 만 처리 할 수 ​​있습니다. 그러나이 시나리오에서는 병합 충돌을 일으키는 버전이 올바른지 알 수 없습니다.

대한 추가 정보를 원하시면,이 게시물을 참조 : when exactly does a git merge conflict arise

([정확히 자식 충돌이 발생 병합 않을 때]의
1

다른 사람이 같은 줄을 수정하려고하면 git에서 병합 충돌이 일어나고 자동으로 분기에 병합 할 수 없습니다.

예를 들어, 두 명의 팀원이 동일한 repo를 포크하고 로컬 분기에서 수정을 수행하고 마스터에게 풀 요청을 생성했습니다. 줄 번호 10이 둘 다 수정되었다고합니다.

첫 번째 사용자의 변경 사항이 업스트림에 병합되고 두 번째 사용자의 끌어 오기 요청이 아직 열려있는 경우 병합 충돌이 있으므로 변경 사항이 자동으로 병합 될 수 없음을 보여줍니다. 두 번째 남자의 지점에는 첫 번째 사람이 만든 변경 사항이 없습니다.

이 경우 수동으로 병합 충돌을 수정해야합니다. https://help.github.com/articles/resolving-a-merge-conflict-using-the-command-line/을 참조하여 명령 줄에서 수동으로 수정하는 방법을 참조하십시오.

관련 문제