sitelink1 http://yaraba.tistory.com/478 
sitelink2  
sitelink3  

"깃(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) 과정을 그래프를 통해서 확인해 본 것입니다.

번호 제목 글쓴이 날짜 조회 수
35 [Review] gitflow, 쉬운 git branch 관리 By 개발왕 김코딩 on 2월 11, 2014 in 개발 이야기 file 황제낙엽 2016.05.18 57
34 [TortoiseGit] 윈도우에서 깃(Git)을 좀더 편리하게 사용하기 file 황제낙엽 2016.05.17 103
33 윈도우에서 깃(git) 서버 설치하기 file 황제낙엽 2016.05.17 404
» [TortoiseGit] 깃(Git) 브랜치 머지(Merge)하기 file 황제낙엽 2016.05.17 157
31 [TortoiseGit] 깃(Git)으로 브랜치/태그 만들기 file 황제낙엽 2016.05.17 142
30 Pro Git Book 다운로드 file 황제낙엽 2016.05.17 123
29 Git, 정말 필요한가 file 황제낙엽 2016.05.12 68
28 GIT/ 프로젝트, 폴더, 파일 관리 프로그램 장점 및 추천 (TortoiseGit) file 황제낙엽 2016.05.12 131
27 Git 의 기능 및 장점 황제낙엽 2016.05.12 56
26 Git 의 개념과 기초 사용법 file 황제낙엽 2016.05.12 72
25 Git 과 svn 비교 - svn 대비 git의 차별점 file 황제낙엽 2016.05.12 107
24 Git에 대한 단상 황제낙엽 2016.05.12 24
23 Git 의 장점과 단점 황제낙엽 2016.05.12 191
22 Git 의 기능 및 장점 황제낙엽 2016.05.12 23
21 TortoiseSVN 잠그기 (Get lock) file 황제낙엽 2016.02.04 65
20 VisualSVN Server 와 TortoiseSVN 관련 링크 모음 file 황제낙엽 2016.02.03 115
19 Win7 64bit에서 subclipse 1.6.x 사용 시 javahl 버전 에러 황제낙엽 2013.03.02 44
18 Versioning 에 대한 참고 사항 황제낙엽 2012.08.28 62
17 SVN 사용시 revision 번호로 버전관리하는 방법 황제낙엽 2012.08.28 586
16 How do I get JavaHL? 황제낙엽 2010.09.28 51