앞서 우리는 병합(merge)의 몇 가지 유형에 대해서 살펴보았습니다. 이제부터 앞선 아티클에서 도식화하여 살펴본 merge 사례를 직접 소스트리에서 수행해 보도록 하겠습니다.
이번에 할 작업은 위의 케이스입니다. [master] 브랜치는 '커밋5' 상태를 가리키고 있고 피처 브랜치인 [feature/detail-page]는 '커밋7'을 가리키고 있는 상태입니다. 여기서 [master] 브랜치에 [feature/detail-page] 브랜치를 병합하는 작업을 수행하겠습니다. 어떤 브랜치가 기준이 되는지가 항상 중요하므로 잘 체크해야 합니다.
현재 소스트리의 상태는 아래와 같습니다.
1. 우선, 병합의 기준이 되는 브랜치로 체크아웃을 진행합니다. 여기서는 [master]가 되겠죠? [master] 브랜치로 체크아웃을 진행합니다.
2. [master] 브랜치로 병합(merge)하려는 커밋('상세 페이지 관리 추가')을 우클릭하여 "병합"을 클릭합니다. (또는 [master] 브랜치로 체크아웃 된 상태에서 좌측 사이드바의 [feature/detail-page]를 우클릭하여 "현재 브랜치로 feature/detail-page 병합"을 클릭합니다)
3. 병합을 실행하면, 경고문이 출력됩니다. "fast-forward가 가능해도 새 커밋으로 생성"이라는 체크박스가 등장하네요. 우리가 앞서 설명했듯이, 현재 커밋의 병합은 fast-forward 병합이 되기 때문에, 굳이 새로운 커밋이 생성되지 않는다고 설명했습니다. 하지만, 이 체크박스를 선택하면 일반 병합과 마찬가지로 [master]에 새로운 커밋이 생성됩니다.
우선은 체크하지 않고 진행합니다.
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] 태그 역시 "상세 페이지 관리 추가" 커밋으로 이동한 것을 확인할 수 있습니다.
'Project Management > Git & Github' 카테고리의 다른 글
[Chapter 3] repository 협업(7) - Pull Request (0) | 2023.03.24 |
---|---|
[Chapter 3] repository 협업(6) - 브랜치 병합하기 : 충돌(conflict) (0) | 2023.03.20 |
[Chapter 3] repository 협업(4) - 브랜치 병합하기 개념 (0) | 2023.03.18 |
[Chapter 3] repository 협업(3) - 새로운 branch 추가 생성하기 (0) | 2023.03.13 |
[Chapter 3] repository 협업(2) - branch 생성, commit in Sourcetree (0) | 2023.03.12 |