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

[Life Hack] OBS Studio로 녹화하기

게임을 할 때나, 컴퓨터로 복잡한 작업을 할 때는 기록을 위해 녹화를 하고 싶은 경우가 있습니다. 컴퓨터 화면을 녹화할 수 있는 프로그램은 Fraps, 반디캠, 오캠...

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

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

[워드프레스] 뉴스페이퍼 테마 구매 및 적용하기

지난 시간에 워드프레스를 설치했습니다만, PHP 프로그래밍에 능숙한 분이 아니라면 워드프레스 테마를 직접 만들어서 운영하기 쉽지 않습니다. 그렇기 때문에 대부분의 사용자들은 전문가들이 제작한 워드프레스 테마를...

[기계학습] 7. VC Dimension

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

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

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

Recent comments