"깃(Git)으로 브랜치/태그 만들기"에서 다루었던 브랜치 만들기로 개발을 진행하다가 테스트 및 디버깅 작업이 완료되어 메인 트랙(master)에 합치거나 다른 브랜치에 병합해서 진행할 경우에 사용하는 기능이 머지(Merge)입니다. 병합 작업의 절차는 합칠 대상으로 작업 사본(Working copy)을 준비합니다. 작업 사본 준비는 대상 브랜치로 체크아웃 받거나 갈아타기를 수행하면 됩니다. 합칠 대상으로 작업 사본을 준비 했으면 가져올 브랜치나 태그를 지정하여 병합을 수행합니다. 병합 과정에 문제가 없이 자연스럽게 합쳐지면 병합 작업을 그대로 끝나지만 브랜치간 병합 여부를 자동으로 판단하지 못하는 "충돌(Conflict)"이 발생하면 충돌을 해결하는 과정을 거쳐야 합니다. 충돌 발생 여부와 관계없이 브랜치간 대규모 병합 작업이 있었다면 프로젝트를 다시 빌드하여 테스트하는 과정은 반드시 수행해야 할 것입니다.

 

mrg1.jpg

 

병합 기준이 되는 브랜치와 가져올 브랜치 모두 작업중인 내용은 커밋을 완료하고 머지하는 것이 병합 과정의 혼란을 최소화하는 방법입니다. 예제에서는 주가지(master)와 브랜치에서 동일 코드의 동일 라인을 수정후 커밋하여 인위적으로 "충돌(Conflict)"을 일으키고 그 해소 과정까지를 다룰까 합니다.

 

mrg2.jpg

 

주가지(master)를 체크아웃 및 커밋한 상태에서 컨텍스트 메뉴>병합을 선택합니다.

 

mrg3.jpg

 

주가지(master)와 병합할 브랜치를 선택하고 병합 메시지에 커밋 메시지를 입력하고 [확인]을 누릅니다.

 

mrg4.jpg

 

병합(Merge) 과정에 문제가 없다면 자연스럽게 병합이 종료되겠지만 위의 그림과 같이 자동 병합되지 않는 "충돌(Conflict)"이 발생하면 해당 문제들을 해소해 주어야 합니다. [충돌 해결하기]를 클릭합니다.

 

mrg5.jpg

 

[충돌 해결하기]를 클릭하면 위의 그림과 같이 대상 목록을 리스팅하는데 상태가 "충돌"인 코드를 더블클릭하면 상황을 파악할 수 있습니다.

 

mrg6.jpg

 

"충돌"인 코드를 더블클릭해서 나온 화면입니다. 브랜치(저장소, 좌측)의 내용을 적용할지, 아니면 주가지(작업사본, 우측)의 내용을 적용할지 판단해서 하단에 있는 병합 코드의 컨텍스트 메뉴를 통해서 "'저장소'의 텍스트 출력 사용" 또는 "'작업사본'의 텍스트 출력 사용"을 선택하면 충돌을 해소할 수 있습니다. 변경된 병합 코드를 저장합니다.

 

mrg7.jpg

 

변경된 병합 코드를 저장하면 위의 창처럼 파일에 대한 마킹 여부를 묻는데 " Mark as resolved"를 선택합니다.

 

mrg8.jpg

 

충돌 해소 과정을 거치면 위의 그림과 같이 상태가 "충돌"에서 자동으로 변경됩니다. 커밋 메시지를 확인하고 [확인]하면 병합 결과가 커밋됩니다.

 

mrg9.jpg

 

위의 그림은 본 예제의 브랜치 만들기와 커밋, 병합(Merge) 과정을 그래프를 통해서 확인해 본 것입니다.

번호 제목 글쓴이 날짜 조회 수
79 [Gemini] branch 와 worktree 의 차이점 황제낙엽 2026.09.27 15
78 버전 관리 이슈 케이스 (1) : 장기적으로 pull 하지 않은 개발자의 대량의 merge 이슈 발생 file 황제낙엽 2026.05.13 480
77 sourcetree - 특정 커밋으로 프로젝트 변경 황제낙엽 2025.08.26 676
76 git clone시 보안에 취약하지만 사용자 아이디와 비번 저장해놓고 사용하기 황제낙엽 2025.08.05 683
75 cherry pick 내가 원하는 커밋만 가져오기 file 황제낙엽 2022.02.17 1051
74 Git Extensions Online Manual 황제낙엽 2022.02.17 5441
73 TortoiseSVN 초보자 가이드 file 황제낙엽 2022.02.09 973
72 [TortoiseSVN] SVN Revision 되돌리는 법 file 황제낙엽 2022.02.09 2608
71 심플한 커밋 이력 조회 (git log --pretty=format) [2] 황제낙엽 2022.01.12 1078
70 Git 특정 폴더 및 파일만 clone 하기 (작성중) 황제낙엽 2021.10.08 1018
69 git remote set-url file 황제낙엽 2021.09.03 909
68 git clone [bare/mirror] 정리 file 황제낙엽 2021.09.03 1493
67 Git Repository 이동하기 황제낙엽 2021.09.02 912
66 유용한 Git 명령어 몇가지 황제낙엽 2021.09.02 924
65 Git의 4가지 영역 황제낙엽 2021.09.02 907
64 Git bare repository 황제낙엽 2021.09.02 834
63 git reset의 3가지 옵션 제대로 이해하기 file 황제낙엽 2021.07.31 916
62 이전 커밋으로 되돌리기 (revert, reset) file 황제낙엽 2021.07.31 1075
61 TortoiseSVN - add to ignore list file 황제낙엽 2021.06.04 1176
60 Ubuntu 에 Git 설치 황제낙엽 2020.09.13 937