티스토리 뷰
"깃(Git)으로 브랜치/태그 만들기"에서 다루었던 브랜치 만들기로 개발을 진행하다가 테스트 및 디버깅 작업이 완료되어 메인 트랙(master)에 합치거나 다른 브랜치에 병합해서 진행할 경우에 사용하는 기능이 머지(Merge)입니다. 병합 작업의 절차는 합칠 대상으로 작업 사본(Working copy)을 준비합니다. 작업 사본 준비는 대상 브랜치로 체크아웃 받거나 갈아타기를 수행하면 됩니다. 합칠 대상으로 작업 사본을 준비 했으면 가져올 브랜치나 태그를 지정하여 병합을 수행합니다. 병합 과정에 문제가 없이 자연스럽게 합쳐지면 병합 작업을 그대로 끝나지만 브랜치간 병합 여부를 자동으로 판단하지 못하는 "충돌(Conflict)"이 발생하면 충돌을 해결하는 과정을 거쳐야 합니다. 충돌 발생 여부와 관계없이 브랜치간 대규모 병합 작업이 있었다면 프로젝트를 다시 빌드하여 테스트하는 과정은 반드시 수행해야 할 것입니다.
병합 기준이 되는 브랜치와 가져올 브랜치 모두 작업중인 내용은 커밋을 완료하고 머지하는 것이 병합 과정의 혼란을 최소화하는 방법입니다. 예제에서는 주가지(master)와 브랜치에서 동일 코드의 동일 라인을 수정후 커밋하여 인위적으로 "충돌(Conflict)"을 일으키고 그 해소 과정까지를 다룰까 합니다.
주가지(master)를 체크아웃 및 커밋한 상태에서 컨텍스트 메뉴>병합을 선택합니다.
주가지(master)와 병합할 브랜치를 선택하고 병합 메시지에 커밋 메시지를 입력하고 [확인]을 누릅니다.
병합(Merge) 과정에 문제가 없다면 자연스럽게 병합이 종료되겠지만 위의 그림과 같이 자동 병합되지 않는 "충돌(Conflict)"이 발생하면 해당 문제들을 해소해 주어야 합니다. [충돌 해결하기]를 클릭합니다.
[충돌 해결하기]를 클릭하면 위의 그림과 같이 대상 목록을 리스팅하는데 상태가 "충돌"인 코드를 더블클릭하면 상황을 파악할 수 있습니다.
"충돌"인 코드를 더블클릭해서 나온 화면입니다. 브랜치(저장소, 좌측)의 내용을 적용할지, 아니면 주가지(작업사본, 우측)의 내용을 적용할지 판단해서 하단에 있는 병합 코드의 컨텍스트 메뉴를 통해서 "'저장소'의 텍스트 출력 사용" 또는 "'작업사본'의 텍스트 출력 사용"을 선택하면 충돌을 해소할 수 있습니다. 변경된 병합 코드를 저장합니다.
변경된 병합 코드를 저장하면 위의 창처럼 파일에 대한 마킹 여부를 묻는데 " Mark as resolved"를 선택합니다.
충돌 해소 과정을 거치면 위의 그림과 같이 상태가 "충돌"에서 자동으로 변경됩니다. 커밋 메시지를 확인하고 [확인]하면 병합 결과가 커밋됩니다.
위의 그림은 본 예제의 브랜치 만들기와 커밋, 병합(Merge) 과정을 그래프를 통해서 확인해 본 것입니다.
'IT 일반' 카테고리의 다른 글
DB를 냉장고처럼 쓰자 - 상품화된 DBMS(Commodity DBMS) (0) | 2016.08.23 |
---|---|
DB를 냉장고처럼 쓰자 - 데이터베이스와 냉장고의 이해 (0) | 2016.08.22 |
깃(Git)으로 브랜치/태그 만들기 (0) | 2016.05.10 |
패치 만들기와 적용 - 토터스깃(TortoiseGit) (0) | 2016.04.07 |
2016년 정보올림피아드 공모부문 도전하기 (2) | 2016.02.25 |