본문 바로가기

Project Management/Git & Github

[Chapter 3] repository 협업(5) - 브랜치 병합하기 : fast-forward

github logo image

 

 

 

앞서 우리는 병합(merge)의 몇 가지 유형에 대해서 살펴보았습니다. 이제부터 앞선 아티클에서 도식화하여 살펴본 merge 사례를 직접 소스트리에서 수행해 보도록 하겠습니다. 

 

 

fast-fowrd 사례의 도식

 

 

이번에 할 작업은 위의 케이스입니다. [master] 브랜치는 '커밋5' 상태를 가리키고 있고 피처 브랜치인 [feature/detail-page]는 '커밋7'을 가리키고 있는 상태입니다. 여기서 [master] 브랜치에 [feature/detail-page] 브랜치를 병합하는 작업을 수행하겠습니다. 어떤 브랜치가 기준이 되는지가 항상 중요하므로 잘 체크해야 합니다. 

 

현재 소스트리의 상태는 아래와 같습니다. 

 

 

 

 


 

1. 우선, 병합의 기준이 되는 브랜치로 체크아웃을 진행합니다. 여기서는 [master]가 되겠죠? [master] 브랜치로 체크아웃을 진행합니다. 

 

[master] 브랜치로 체크아웃 했습니다

 

 

 

 

 

 

 

2. [master] 브랜치로 병합(merge)하려는 커밋('상세 페이지 관리 추가')을 우클릭하여 "병합"을 클릭합니다. (또는 [master] 브랜치로 체크아웃 된 상태에서 좌측 사이드바의 [feature/detail-page]를 우클릭하여 "현재 브랜치로 feature/detail-page 병합"을 클릭합니다)

 

[master]로 병합하려는 커밋을 우클릭합니다.

 

또는, 해당 브랜치 자체를 우클릭하여 병합을 실행합니다

 

 

 

 

 

3. 병합을 실행하면, 경고문이 출력됩니다. "fast-forward가 가능해도 새 커밋으로 생성"이라는 체크박스가 등장하네요. 우리가 앞서 설명했듯이, 현재 커밋의 병합은 fast-forward 병합이 되기 때문에, 굳이 새로운 커밋이 생성되지 않는다고 설명했습니다. 하지만, 이 체크박스를 선택하면 일반 병합과 마찬가지로 [master]에 새로운 커밋이 생성됩니다. 

 

우선은 체크하지 않고 진행합니다.

 

fast-forward 병합 확인 팝업의 출력

 

 

 

 

4. 자, 이제 빨리감기 병합이 완료되었습니다. 현재 소스트리의 상태를 보고 각 브랜치의 상태가 어떤 상황인지 해석해 보도록 하겠습니다.

 

빨리감기 병합 직후의 히스토리 상태

 

 

빨리 감기 병합 실행 전, [master]와 [origin/master]의 위치는 "피처리시트, 굿즈리스트 생성" 커밋에 위치해 있었습니다. 이제, 빨리 감기 병합 이후, [master] 태그는 "상세 페이지 관리 추가"에 '2'라는 숫자와 함께 나타나고 있습니다. 
▷ 현재, [master] 브랜치 기준으로 'Push' 아이콘에 2가 출력됩니다. 
▷ [origin/master] 태그는 여전히 "피처리스트, 굿즈리스트 생성"에 위치합니다. 

* [master] 브랜치의 현재 상태는 결국 - 로컬 저장소에서는 "상세 페이지 관리 추가" 상태로 병합되어 업데이트된 상태라는 의미입니다. 하지만, [master] 브랜치의 원격 저장소(origin/master)에는 현 상태가 반영되지 않은 상태인 것입니다. [master] 브랜치의 원격 저장소는 현재 [master] 브랜치 로컬 저장소보다 두 개의 커밋이 뒤처진 상태라는 의미입니다.

결국, [master] 브랜치 상에서 push까지 완료하면, 현재의 상태가 원격 저장소의 [master] 브랜치까지 반영되는 상태입니다. 

 

 

 

 

5. [master] 브랜치의 로컬 저장소 변경 내역 반영을 위해, push를 실행합니다. 현재의 변경 사항을 [master] 브랜치에 반영하는 것이니 해당 브랜치만 선택하여 push를 진행합니다. 

 

 

 

 

 

6. push를 완료하고나면, [origin/master] 태그 역시 "상세 페이지 관리 추가" 커밋으로 이동한 것을 확인할 수 있습니다.