Home Git 5. Branch 병합하기

[Git] 5. Branch 병합하기

Post Date

Modified Date

Category

지난 포스트에서 브랜치가 무엇인지 알아보고, 어떻게 만드는지도 알아보았습니다. 만약 브랜치에서 추가한 기능을 원래의 프로젝트(마스터 브랜치)에 반영하고 싶을 때는 굳이 마스터 브랜치를 직접 수정할 필요 없이, 병합(Merge)라는 기능을 통해 간단하게 해결할 수 있습니다.

브랜치 병합하기

브랜치를 병합하려면 먼저 마스터 브랜치 외의 다른 브랜치가 있어야 합니다. 저는 지난 포스트에서 만들었던 another 브랜치를 사용하려고 하는데, 만약 위와 같은 화면에서 마스터 브랜치 하나만 있는 경우에는 아래의 포스트를 참고해서 다른 브랜치를 먼저 만드시기 바랍니다.

먼저 항상 하던 것처럼 Git Bash 창을 열도록 합니다. git branch 명령어를 입력하면 존재하는 모든 브랜치의 목록을 볼 수 있습니다. 초록색으로 표시된 브랜치는 현재 작업 중인 브랜치를 의미합니다.

another 브랜치에서 변경한 사항을 master 브랜치에 적용하려고 합니다. 이 때, “적용받을” 브랜치를 기준으로 작업해야 합니다. 그렇기 때문에 작업하는 브랜치를 master 브랜치로 이동해야 합니다. 작업할 브랜치를 이동하려면 git checkout (브랜치이름) 명령어를 입력하시면 됩니다. 이 명령어를 입력하고 나면 오른쪽에 하늘색 글씨로 (another) 이라고 나와있는 부분이 (master) 라고 변한 것을 알 수 있습니다.

이제 병합하는 일만 남았습니다. 다른 브랜치의 내용을 현재 브랜치에 적용하기 위해서는 git merge (브랜치이름) 명령어를 입력하면 됩니다.

병합 명령어를 실행시키니 작업하던 HelloWorld.java 파일이 변경되었다는 메시지가 출력됩니다.

‘병합’ 이라는 어감으로 인해 병합을 하게 되면 another 브랜치가 없어지는 것처럼 생각할 수도 있지만, 실제로는 another 브랜치가 사라지지 않고 그대로 남아있습니다.

병합된 것을 확인하려면 git push 명령어까지 실행시켜주어야 합니다. 푸시를 하고 난 뒤, GitHub에서 파일을 확인해보시면, master 브랜치에 another 브랜치에서 작업했던 내용이 반영된 것을 알 수 있습니다.

브랜치 병합 시 충돌이 발생하는 경우

간혹 브랜치 병합 시 충돌이 일어나는 경우가 있습니다. 이런 문제는 보통 마스터 브랜치와 다른 브랜치를 같이 수정하는 경우 발생합니다. 어떤 경우에 충돌이 발생하는지 보여드리기 위해 고의적으로 충돌이 발생하는 상황을 만들어 보겠습니다.

먼저 master 브랜치에서 HelloWorld.java 파일을 수정해보도록 하겠습니다. 간단하게, 이것은 마스터 브랜치에서만 볼 수 있다는 메시지를 출력하는 프로그램으로 변경해 보았습니다. 수정한 뒤, 파일을 저장합니다.

master 브랜치에서 변경한 내용을 반영하기 위해 git commit 을 사용하여 커밋합니다.

이번에는 another 브랜치로 이동하여 역시 HelloWorld.java 파일을 수정하겠습니다. master 브랜치에서 수정했던 것과 비슷하지만 다르다는 것을 알 수 있도록 수정했습니다.

수정을 마친 후에 저장 후 커밋까지 완료합니다.

이 상태에서, master 브랜치와 another 브랜치를 병합해보도록 하겠습니다. 결과를 보기 전에 생각해보면, master 브랜치와 another 브랜치에서 같은 파일, 같은 부분을 수정했기 때문에 “병합”을 수행하기 어렵다는 것을 눈치챌 수 있습니다.

생각했던대로, 병합에서 충돌이 일어났다고 경고 메시지가 출력됩니다. 병합을 완료하려면, 충돌이 일어난 부분을 사용자가 직접 수정해주어야 합니다.

브랜치 병합 시 충돌 해결하기

충돌이 발생하게 되면 Git 설치 시 선택했던 편집기로 충돌이 일어난 파일이 열리게 됩니다. 위의 스크린샷을 보시면 충돌이 일어난 부분이 표시되어 있습니다.

이런 경우에는 파일을 직접 수정해주어야 합니다. <<<<<< ~ >>>>>> 구간을 수정한 다음, 저장하고 파일을 닫으면 끝납니다.

병합 충둘 부분이 해결되었다는 메시지가 나옵니다. 푸시를 해서 확인해보면, 무사히 병합이 수행된 것을 확인할 수 있습니다.

댓글 남기기

Please enter your comment!
Please enter your name here

Duvelix

학부에서는 수학을, 대학원에서는 컴퓨터공학을 전공했습니다. 현재는 컴퓨터공학과 박사과정을 수료하고 보이지 않는 졸업과 싸우는 중입니다.

Popular posts

[KATC] 전문연구요원 훈련소 후기 – 프롤로그

훈련소를 수료하고 돌아온지도 거의 열흘이 지났습니다. 그 동안 밀려있던 일들을 처리하기도 하고 오랜만에(?) 느낀 사회의 자유를 즐기느라 포스트를 작성하지 못했습니다. 당분간은 정기적으로 작성해던 포스트의...

[기계학습] 7. VC Dimension

일곱 번째 챕터에서는 지난 챕터 마지막에 나온 Vapnic-Chervonenkis (VC) Dimension에 대해 배우게 됩니다. 이번 챕터는 4개의 소주제로 나뉘어 있습니다. 먼저 VC Dimension의 정의를 배우고, Perceptron에서의...

[Tip] New 닌텐도 3DS XL vs New 닌텐도 2DS XL

안녕하세요, 오늘 포스트는 New 닌텐도 3DS XL과 New 닌텐도 2DS XL의 차이점을 소개하려고 합니다. 저는 New 닌텐도 2DS XL로 시작을 했고 최근에 New 닌텐도 3DS...

[KATC] 전문연구요원 훈련소 후기 – 1주차

지난 포스트에 이어서 입영심사대부터 1주차 일정을 자세히 적어보도록 하겠습니다. 입영심사대로 가면 사람이 굉장히 많습니다. 인파를 조금만 헤치고 들어가면 주차장 근처부터 조교들이 입영자 외에는 입장할...

[Life Hack] 구글 애드센스 시작하기

구글 애드센스는 구글에서 컨텐츠 제공자들이 수익을 얻을 수 있게 만드는 광고 게제 서비스입니다. 구글 계정을 통해 가입하여, 제공 받은 광고 태그를 블로그나 유튜브에 삽입하면...

Recent comments