티스토리 뷰

Git 공부

Git 병합 충돌

on1ystar 2019. 3. 11. 23:16
728x90
반응형

본 내용은 생활코딩 - 지옥에서 온 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 을 할 수 있는 상태인 것을 확인할 수 있다.




728x90
반응형

'Git 공부' 카테고리의 다른 글

Git Github 사용법  (0) 2019.03.18
Git fatal: refusing to merge unrelated histories  (0) 2019.03.15
Git merge (fast forward, merge commit)  (0) 2019.03.11
Git 에러 fatal: Not a valid object name: 'master'.  (0) 2019.03.11
Git branch merge  (0) 2019.03.11
댓글