[Git] 3.1. Branch의 생성과 이동

업데이트:

카테고리:

태그: , , , , ,

Branch

  • HEAD : 현재 checkout하고 있는 브랜치를 가리킴
  • branch는 가지의 개념이지만, branch라는 길 위에 commit을 쌓은 것이 아니라 갈라진 커밋 갈래들 사이에서 branch가 특정 커밋을 가리키고 있는 것이라고 이해해야 한다.


Branch의 생성

img

소스트리에서 iTshirt-cat 디렉토리를 열고, 브랜치 버튼을 눌러 ‘feature/detail-page’ 라는 이름의 브랜치를 만들어주었다. 이는 수정사항이 생길 때마다 feature/… 라는 이름의 브랜치를 만들어 수정/추가 한 뒤, 합치기 위한 임의의 branch 규칙이다.


파일의 저장

img_1

‘feature/detail-page’ branch를 만들면, 새롭게 생긴 branch에 checkout된 상태로 생성된다. (체크박스를 통해 master branch에 남아있을 수 있다.) IntelliJ의 iTshirt/iTshirt-cat 디렉토리에 detail-page.md와 feature-list.md를 생성 및 수정하고 저장한다. ctrl+s로 저장하면 스테이지에 올라가지 않은 상태가 되는데(IntelliJ에서 하얀색), SourceTree에서 스테이지에 올린 뒤, commit하면 정상적으로 commit이 반영된다.

그리고 push까지 하게 되면 위의 사진처럼 origin/feature/detail-page 표기도 됨으로써 원격 origin branch(github repo)에도 반영되었음을 표시한다.

img_2

사진처럼 master branch 이외에 feature/detail-page branch가 생겼음을 github에서 확인할 수 있었다.


Branch의 이동 : Checkout

※ 브랜치를 새로 만들 때에는 base branch를 잘 설정해야 한다. 시작하는 시작점이 잘못되면 골치 아플 수 있다.

img_3

SourceTree의 왼쪽 사이드바에서 master branch를 더블클릭하거나 우클릭 후 [체크아웃]을 클릭하여 master branch로 체크아웃해준다. 사진처럼 그래프의 3번째 점이 흰색으로 표시되고 두꺼운 글씨로 변경되었다. 이를 통해 master branch는 3번째 commit인 ‘티셔츠, 기능 리스트 추가’에 머무르고 있음을 알 수 있다.

img_4

이렇게 master branch가 있는 commit에서 새로운 branch인 ‘feaure/cart’를 만들어준다.

img_5

이렇게 feature/cart branch가 생성됨과 함께 checkout 되어있다. IntelliJ로 돌아와서 iTshirt-cat directory의 feature-list.md 파일을 열어보았다.

img_6

아까 feature/detail-page branch에서 ‘3. 디테일 페이지 보여주기’ 텍스트를 추가했던 파일이다. 하지만 위의 사진처럼 2번까지 밖에 없는 것을 알 수 있다. 당연한 결과이다. ‘feature/detail-page’ branch를 분기하기 이전의 commit에서 ‘feature/cart’ branch를 뽑아냈기 때문이다.

img_7

위처럼 ‘3. 장바구니 담기’ 텍스트를 추가해주었다. (참고로 나중에 합칠 때 이 두 branch는 충돌하게 될 예정이다.)

img_8

그리고 새로운 파일 cart.md를 만들고 ‘장바구니 담기’ 텍스트를 적어준 뒤, [iTshirt-cat] 폴더에 저장한다.

img_9

SourceTree로 돌아가서 수정한 파일인 feature-list.md 파일과 새로 추가한 파일인 cart.md를 모두 스테이지로 올리고 ‘장바구니 담기 기능’이라는 메세지로 commit&push 해준다.

img_10

commit history는 위와 같다. HEAD는 마지막으로 작업한 branch인 feature/cart branch에 위치한다.


Reference

  • 팀 개발을 위한 Git GitHub 시작하기, 한빛미디어, 정호영,진유림

댓글남기기