본문 바로가기

Project Management/Git & Github

[Chapter 3] repository 협업(3) - 새로운 branch 추가 생성하기

github logo image

 

 

 

이전 아티클까지 우리는 [master] 브랜치에서 파일 작업을 하다가, [master] 브랜치의 특정 시점을 기점으로 [feature/detail-page] 라는 새로운 브랜치를 생성했고 이 새로운 브랜치에서 두 번의 커밋을 진행했습니다. 

 

 

 

[Chapter 3] repository 협업(2) - branch 생성, commit in Sourcetree

지금부터는 우리가 배운 브랜치 개념을 소스트리에서 직접 적용해 실습을 진행해 보도록 하겠습니다. 우리는 git의 사용법을 알아보면서 ME와 John 두 사람이 파일 작업을 하는 상황을 가정하고

nozeroslope.tistory.com

 

이제, 새로운 브랜치를 [master] 브랜치의 시점에서 별개로 떨어져 나와서 생성하는 과정을 실제로 실습해 보도록 하겠습니다. 참고로 파일 상태는 임의로 변경하기 보다는 이전부터의 과정을 그대로 따라와 주셔야 합니다. 

 

 


 

 

자, 이제는 새로운 브랜치 [feature/popup]를 생성해 보겠습니다. 참고로 이 브랜치는, [master] 브랜치의 '피처리스트, 굿즈리스트' 커밋 시점을 가리킨다는 점일 기억합니다. 또한, John에 빙의한 프로세스이지만 실제 예제는 ME의 폴더에서 진행할 예정입니다. 

 

[feature/popup] 브랜치는 [master]의 위 커밋을 기준으로 생성됩니다

 

 

1. 우선, [master] 브랜치로 체크아웃 합니다. master 브랜치를 더블 클릭하여 체크아웃을 실행합니다. master 브랜치의 해당 시점부터 새로운 브랜치가 생성된다는 점을 기억해야 합니다. 실수로 [feature/detail-page] 시점에서 브랜치를 생성하면 다른 결과가 나오겠죠?

 

master 브랜치로 체크아웃 했습니다. '피처리스트, 굿즈리스트 생성' 커밋이 기준이 되었습니다

 

 

 

2. 이번에도 메뉴 상단의 '브랜치' 메뉴를 클릭해 새로운 [feature/popup] 브랜치를 생성해 줍니다. 

 

feature/popup 브랜치를 생성합니다

 

 

 

3. 이제 [feature/popup] 브랜치로 체크아웃 한 상태에서, ME의 로컬 저장소로 이동해 파일 작업을 하겠습니다. 폴더로 이동하여 "feature-list.md"를 편집해 보겠습니다.

 

 

 

4. 자, ME의 로컬 저장소에 있는 "feature-list.md"에는 [feature/detail-page] 브랜치에서 작업한 내용이 반영되어 있지 않습니다. 그래서 넷째 줄에 _상세 페이지 관리 라는 텍스트가 없어졌습니다. 일단 우리는 향후의 충돌 실습을 위해 이 넷째 줄에 _팝업 출력 이라는 텍스트를 삽입하겠습니다. 

 

참고로 본인의 로컬 저장소(study_git)을 탐색기로 열어놓고, popup 브랜치와 feature/detail-page 브랜치를 각각 체크아웃(더블클릭)해서 살펴보면 체크아웃 할때마다 로컬 저장소의 파일 상태가 해당 브랜치의 커밋 상태로 변경되는 것을 확인할 수 있습니다. 브랜치 체크아웃이 간단한 절차이지만, 신중해야 하는 이유입니다.

 

 

넷째 줄에 '팝업 출력' 텍스트를 추가합니다. 나중에 다른 브랜치와 충돌합니다

 

 

5. 자, 이 상태에서 파일을 하나 더 추가하겠습니다. "popup.md"를 생성하고, 팝업 기능 이라는 텍스트를 한 줄 입력했습니다. 이제 "feature-list.md"와 "popup.md"를 '팝업 기능 추가'라는 커밋으로 진행합니다.

 

 

 

6. 이제 push까지 진행되었다면, 아래와 같은 브랜치 히스토리를 확인할 수 있습니다. [master] 브랜치의 '피처리스트, 굿즈리스트 생성' 커밋을 기점으로 [feature/detail-page] 브랜치와 [feature/popup] 브랜치가 뻗어져 나온 상태가 되었습니다.

 

 

위 상태를 도식화하면 아래와 같습니다. 

 

 

 

이런 방식으로 각각의 피처 브랜치에서 개발작업을 진행한 후, 모든 피처 브랜치를 [master] 브랜치에 병합할 예정입니다.