초보 개발자

Git merge conflict 본문

AI 웹개발 트랙 - 내배캠/5주차

Git merge conflict

taehyeki 2022. 1. 10. 16:05

하나의 파일을 여러 브랜치에서 수정하고 하나의 branch에 merge하려고 할 때 merge conflict(병합 충돌)이 발생한다.

이 것은 오류가 아니다.

양 쪽에서 내용이 수정되었는데 어떤 내용을 반영해야 할지 사용자에게 물어보는 것이다.

 

국물 내는 비법을 추가하는 feature/stock브랜치와 르탄이의 가문의 김치찌개 비법을 추가할 jjigae_rtan 브랜치를 만들어서 작업하려고 한다. 다른 브랜치에서도 같은 파일을 수정해서 일부러 Merge conflict를 내고보 충돌을 해결해보려고 한다. 우리가할 작업은 아래와 같다.

먼저 main에서 브랜치 2개를 만들어 주었다.

그리고 feature/stock으로가서 2개의 커밋을 해주었다. 

그리고 feature/jjigae_rtan으로 가서 같은 파일을 수정하고 커밋을 해주었다.

그럼 이렇게 된 것을 확인할 수가 있다. 이제 main과 병합을 하기전에 현 상황을 그림으로 나타내면 아래와 같다.

전 게시물에서 했던 것은 2개의 브랜치에서 서로 다른 파일을 수정하였고, 그걸 병합했었다. 이 때는 머지 충돌이 일어나지 않았다.

 

이번에 할 것은 2개의 브랜치에서 서로 같은 파일을 수정하였고 이를 병합하려고한다. 이 때는 머지 충돌이 일어난다.

 

내가 merge할 브랜치(main)에 체크아웃을 해주고 병합버튼을 눌르자.  먼저 feature/stock을 병합해주자.

그럼 아래와 같이 바뀔 것이다.

이제 feature/jjigae_rtan을 머지해보자. 이제 충돌이 일어난다.

 

파일 상태를 확인하면 아래와 같이 변해있는 것을 확인할 수가 있다.

<<<<<<HEAD에는 현재 브랜치에있는 파일의 내용이 나온다.

그리고 =======를 기준으로  병합하려고 하는 브랜치의 파일의 내용이 나온다.

그리고 >>>>>>>feture/jjigae_rtan처럼 브랜치의 이름이 나온다.

 

이 사이의 내용을 해결해주면 된다. 해결방법은 간단하다.

<<<<<<HEAD

======

>>>>>>이 세개를 지우고 커밋을하면 된다.

그럼 이렇게 잘 해결이 된 것을 확인할 수가 있다. 그림으로 보면 아래와 같다.

'AI 웹개발 트랙 - 내배캠 > 5주차' 카테고리의 다른 글

Git fork  (0) 2022.01.11
Git PR(pull request)  (0) 2022.01.10
Git 원격 repo와 branch  (0) 2022.01.10
Git merge  (0) 2022.01.10
Git branch 생성, 삭제  (0) 2022.01.10