본문 바로가기
Linux & GIT

git merge할때 발생하는 충돌 쉽게 이해하고 해결하기

by 누워서 코딩 2019. 6. 20.

'release01'와 'release02' 브랜치에 변경한 부분을

모두 develop 브랜치에 Merge(병합)해보자.

 

1. 먼저 develop Branch로 checkout 한다.

$git checkout develop

 

2. 'release01'브랜치의 내용을 Merge 한다.

$git merge release01

 

3. 'release02'브랜치의 내용을 Merge 한다.

$git merge release02

 

만약 이때 당황스럽게도 다음과 같이

'CONFLICT(충돌)'이라는 메시지가 나왔다면,

Auto-merging(자동 병합)에 실패한 것입니다.

 

Auto-merging history.xml

CONFLICT (content): Merge conflict in history.xml

Automatic merge failed; fix conflicts and then commit the result.

 

먼저 충돌이 발생한 원인입니다.

앞서 2,3 각각의 브랜치에서 변경한 내용이 history.xml의 같은 행에

포함된 이유로 충돌이 발생한 것입니다.

 

add: 변경 사항을 만들어서 인덱스에 등록해보기

<<<<<<< HEAD

char rel_date[] = "June 10 2019";

=======

char rel_date[] = "June 20 2019";

>>>>>>> release02

 

Git은 충돌이 발생한 부분에 대해 자동으로 위와 같이 충돌 정보를 

포함하여 파일 내부의 내용을 변경합니다.

 

"<<<<<<< HEAD"부터 "======="는 현재 checkout 된 브랜치의

파일 내용이고,

"======="부터 "release02"까지는

머지하려는 Target 브랜치인 "release02"상의  history.xml파일 내부의

내용입니다.

 

이 내용을 보고 어떤 브랜치에서 어떤 부분이 충돌되었는지를

확인할 수 있습니다.

 

확인 후, 특수기호인 "<<<<<<< HEAD" , "=======" , "release02"

를 제거한다.

제거 후, git commit, git push 해주면 작업 완료!

 

충돌이 발생한 부분은 일일이 확인해서 매뉴얼로 이런 방식으로 직접 

수정해주어야 합니다.

 

'Linux & GIT' 카테고리의 다른 글

git log --pretty 확장 옵션 예제  (0) 2021.07.08
git log 명령 사용 - 커밋 히스토리 조회 방법들  (0) 2021.07.07
Git fetch, Git merge 그리고 Git pull  (0) 2019.06.07
Git remote 명령어  (0) 2019.06.05
Git diff 명령어  (0) 2019.06.05

댓글