본문 바로가기

ETC/Git

GitHub 4 - 병합(Marge)

하나의 브랜치를 현재 브랜치와 합치는 것을 병합(marge)라고 합니다.

 

현재 브랜치를 헤드(Head) 브랜치라고 얘기한다고 말했습니다.

예를 들어 헤드 브랜치가 master이고 여기서 이전에 생성한 version2 브랜치를 병합하면 version2의 내용이 master에 반영됩니다.

 

 

병합 시 가장 쉬운 상황

주로 혼자 작업을 할 때 발생하는 아주 행복한 상황입니다.

 

 

위 그림은 헤드 브랜치(*이 붙어 있는)인 master에서 version2가 시작되고 두 번 커밋한 상태입니다.

여기서 병합을 하면 단순하게 master 브랜치가 가르키는 커밋이 version2의 커밋으로 이동합니다.

 

 

 

더 이상 자세한 설명은... 필요없을 것 같습니다.

이런 상황을 fast-forward 라고 합니다.

단순히 브랜치의 참조만 갱신되는 상황이죠. 해-피!

 

 

그렇다면 이제 이전 포스팅에서 작업하던 커밋을 병합해보겠습니다.

 

 

 

헉... 예상대로 충돌이 일어났습니다ㅠ

그럼 병합하려던 파일을 다시 한번 볼까요?

 

 

 

'<<<<<<<HEAD가 version2 브랜치의 내용이고 >>>>>>>master가 master 브랜치의 내용이다'라고 보여주고 있습니다.

이럴 경우 수동으로 수정해주어야 합니다.

 

 

 

현재/수신 변경 사항들과 출력된 기호들 모두 수동으로 지워주었습니다.

그럼 완벽하게 병합이 된 것을 확인하실 수 있습니다.

여기서 또 저장합니다.

 

 

 

커밋에 가보면 충돌이 난 느낌표의 모양의 test.jsp 파일이 있습니다.

우측에 보시면 코드 중 무엇이 제거되고 무엇이 추가되는지 확인이 가능합니다.

여기서 스테이지에 올린 후 병합하는 것이기 때문에 커밋 메시지를 별도로 추가하지 않고 커밋 하겠습니다.

 

 

 

병합이 잘 되었으니 push를 하면 병합이 끝납니다.

병합을 목적으로 한 브랜치라면 version2 브랜치를 병합 후 삭제해도 master에는 남으니 삭제해도 좋습니다.