power-girl0-0

[GIT] Git 브랜치 충돌(Conflict) 처리하기 본문

개발

[GIT] Git 브랜치 충돌(Conflict) 처리하기

power-girl0-0 2021. 2. 17. 20:58
728x90

 

해당 게시물은 나동빈 님의 'Git으로 시작하는 협업 및 오픈소스 프로젝트'강의를 바탕으로 작성된 것입니다.

스스로 공부한 것을 정리하고 복습하기 위한 목적으로 작성하였습니다.


 Branch 충돌 해결 

브랜치 충돌(Conflict)이 발생하면 바로 병합(Merge)을 수행할 수는 없고, 충돌을 해결한 뒤에 병합을 수행해야한다.


실습을 통해서 자세히 알아보자.

 

충돌은 쉽게 말하면 하나의 파일을 여러 명이 수정한 경우를 의미한다.

위와 같이 하나의 브랜치를 만들어서 작업을 수행보자.


 먼저, 특정한 파일에 하나의 함수 div()를 추가한 후 커밋까지 실행해준다.

위 사항을 git log로 확인하면, 아래와 같다.


이제 마스터 브랜치로 이동해서, 똑같은 파일을 다른 내용으로 수정해보자.


로그(Log)까지 확인해보면, 현재 마스터 브랜치를 가리키고 있어서 마스터 브랜치에 대한 정보만 출력되는 것을 확인할 수 있다.


반대로 develop 브랜치를 기준으로 확인하면, 마스터 브랜치에 대한 정보는 보이지 않는다.

왜냐하면, master브랜치와 develop 브랜치는 같지 않기 때문이다.

서로 메시지도 다르고, 파일 또한 다른 게 되어 버린 것이다.


그렇다면, 마스터 브랜치에서 develop 브랜치를 병합(Merge) 해보도록 하자.

병합하니, 충돌(Conflict)이 발생했다는 메시지가 출력되고 실패한 것을 확인할 수 있다.


아래와 같이 컴퓨터에 있는 충돌이 발생한 소스코드를 열어서 확인하니, 서로 다른 두 개의 브랜치에 대한 정보가 출력된다.

여기서 어떤 것을 사용할지 선택하고, 선택한 것으로 코드를 수정해야 한다.

본 글에서는 마스터 브랜치 소스코드를 선택하였다.


수정한 파일을 저장한 후, 커밋(Commit)을 하면 성공적으로 병합을 수행할 수 있다.


다음과 같이 로그를 찍어 보면, 마스터 브랜치가 develop 브랜치를 병합한 형태로 바뀐 것을 확인할 수 있다.


이제 병합이 완료된 develop 브랜치는 제거해주고, 푸시(Push)를 진행하면 된다.

 



 

 

 

728x90
Comments