Git 병합 충돌
본 내용은 생활코딩 - 지옥에서 온 git을 보고 공부했습니다. 조언은 언제든지 감사합니다 !
Git의 merge는 병합 시 같은 파일의 소스코드 변경사항을 자동으로 병합해주는 훌륭한 기능이 있다.
먼저 master에 test1.txt 파일의 내용이다.
작성해 주고 commit 한다.
그 다음 exp 브랜치를 새로 분기하면 exp 브랜치에도 test1.txt 파일이 있게 되는데, 이 파일을 조금 수정한다.
그런 다음 master 브랜치에 exp 브랜치를 merge 하면
master의 test1.txt 파일에 수정한 내용이 그대로 병합됐다.
이 git의 자동 병합 기능은 매우매우 매력적인 기능이다.
단, 주의해야 할 점은 같은 부분을 수정했을 때다.
위에서 function B()를 master는 master로 인자 값을 넣었고 exp는 exp로 인자 값을 넣어 줬다.
즉 같은 부분을 서로 다르게 수정한 것이다.
이럴 경우 merge를 하면 CONFLICT 즉, 충돌이 발생한다.
메세지에 자동 병합을 실패했고, 충돌이 발생한 부분을 수정한 뒤 commit을 하라고 알려준다.
git status를 입력하면 병합되지 않은 경로가 있고 해당 경로가 test1.txt 파일이라는 것을 확인할 수 있다.
이를 해결하는 방법은 충돌이 발생한 부분을 직접 수정해 줘야 한다.
test1.txt 파일을 열어보면 위에서 처럼 파일 내용이 변경되어있다.
===========를 기준으로
<<<<<<< HEAD 아래 부분은 현재 checkout 되어있는 branch (master)가 수정한 내용이고,
>>>>>>>>> exp 위 부분은 exp branch가 수정한 내용이다.
이를 관리자가 알맞게 수정해 주면 된다.
예를들어
이런식으로 수정했다고 친 다음
충돌이 일어난 파일을 add 해주면
git status를 통해 충돌이 고쳐졌다고 알려주고 test1.txt가 commit 을 할 수 있는 상태인 것을 확인할 수 있다.