CODEDRAGON ㆍDevelopment/Git, PM
오류 메시지
Merge Conflicts - You now have merge conflicts in your working copy that need to be resolved before continuing.
You can do this by selecting the conflicted files and using the options under the 'Resolve Conflicts' menu.
브랜치 병합하기 (test -> master) 중 충돌 발생
test 브랜치 작업이 성공적으로 끝나서 master브랜치로 병합하도록 하겠습니다.
현재 브랜치는 가져오려고 하는 브랜치로 이동해야 하는데 현재 브랜치가 master이므로 체크아웃할 필요가 없습니다.
test 브랜치를 선택한 후 >> 마우스 우클릭 >> [Merge test into current branch]
[확인]
"Merge Conflicts" 라는 창이 오픈됩니다.
이 창이 뜨면 병합하는 과정에서 충돌(Conflict)가 발생했다는 의미입니다.
[닫기]
[Window Title] Merge Conflicts
[Content] You now have merge conflicts in your working copy that need to be resolved before continuing.
You can do this by selecting the conflicted files and using the options under the 'Resolve Conflicts' menu.
[ ] Don't ask me again [닫기(C)]
|
충돌문제 해결하기
왜 충돌이 발생했냐하면 서로 다른 두개의 브랜치가 동일한 파일의 동일한 위치의 내용을 변경했기 때문입니다. 그래서 Git은 어느 브랜치의 코드를 적용해야 할지 판단할 수 없으므로 이렇게 충돌 메시지를 사용자에 보여줘서 해결할 수 있도록 알려주게 됩니다.
"Uncommited changes"항목을 클릭하면 index.html파일 항목 앞에 느낌표로 된 아이콘이 보이며 이 파일이 충돌이 났다고 알려주고 있습니다.
충돌이 일어난 index.html파일을 오픈합니다.
현재 여러분이 체크아웃한 브랜치의 내용이 <<<<<<< HEAD와 ======= 사이에 위치합니다.
======= 에서 >>>>>>> test 사이의 내용은 test 브랜치의 내용을 의미합니다.
master브랜치와 test브랜치가 서로 다른 내용을 가지고 있는 데도 불구하고 같은 위치에 있기 때문에 버전관리시스템은 이를 처리하지 못해 충돌을 발생시킨 것입니다.
다른 브랜치의 내용이 필요없다는 해당 라인을 모두 삭제하면 되고 두 브랜치의 내용이 모두 필요하다고 한다면 두 내용을 모두 취합해 주면 됩니다.
두 브랜치의 내용을 모두 취합하도록 하겠습니다.
그리고 충돌 부분을 표시하는 기호는 삭제합니다.
<li>브랜치(Branch)</li>
"Unstaged files"에서 파일 항목을 선택한 후 >> 마우스 우클릭 >> [Resolve Conflicts] >> [Mark Resolved]
Mark Resolved하며 충돌을 확인 한 후 적절하게 해결했다는 사실을 버전관리스스템에 알려줍니다.
[OK]
충돌 표시가 없어진 것을 확인할 수 있습니다.
[Commit]
버전관리시스템에서 자동으로 커밋 로그 메시지를 작성해 줍니다.
바로 직접에 병합과정 중 충돌이 있어났고 이 커밋은 이 충돌을 해결한 커밋이라는 걸 100%알 수 있기 때문에 버전관리시스템이 자동으로 작성해 주게 됩니다.
그래서 test브랜치를 통합하고 이 과정에서 index.html파일에서 충돌이 났다라는 정보를 커밋 로그에 자동으로 추가해 주었습니다.
Merge branch 'test'
# Conflicts: # index.html |
[Commit]
서로 다른 브랜치에서 작업했던 13번 라인의 내용이 충돌했었고 이 충돌을 해결한 결과까지 확인이 되었습니다.