note

Pro git – chapter 3

브랜치

언제 사용하나?

  • 신규 기능이 요구될때 해당 기능 개발 용 브랜치를 분리해서 독립적으로 개발 진행
  • bug-fix가 요구될 때 우선 브랜치를 분리해서 bug-fix 후 확인이 완료되면 master에 merge.
  • 신규 기능 개발 도중에 bug-fix가 요구되는 경우에도 master를 기준으로 bug-fix용 브랜치를 만들어 작업한 후 master에 merge한 후 다시 신규 기능 개발 브랜치에 merge한다. 단 마지막 작업은 bug-fix가 반영된 master와 신규 기능 개발 브랜치를 merge할 수도 있지만, 신규 기능 개발 브랜치에서 하는 게 맞지 않을까?

명령어

git branch branch_name [base branch] // create a new branch
git checkout branch_name // switch the branch
git branch -d branch_name // destroy the branch

혹은 아래와 같이 명령어 하나로

git checkout -b branch_name [base branch] // create and switch to the branch

base branch 를 지정하지 않으면 HEAD가 가리키는 branch에서 branching함. 그러므로 local에서 branch를 만든 후 그 브랜치에서 다시 브랜치를 만들 수 있다. 혹은 remote 서버에서 pull한 branch에서 작업용 브랜치를 만들 수도 있다. 다음은 origin에 있는 feature_2 브랜치에서 branch_3를 만드는 예 (git checkout -b feature_3 origin:feature_2)

주의사항
브랜치에서 개발하다 다른 브랜치에서 개발할 필요가 있는 경우 가능한 현재 브랜치의 작업 내용을 check-in하고 가는 것이 좋다. 아직 commit하지 않은 파일이 checkout 할 브랜치와 충돌나면 브랜치를 변경할 수 없다.(?????) Stashing이나 commit amending으로 해결할 수 있다고 하는데…. 좀 더 공부가 필요

remote branch

* remote branch를 fetch한다고 해서 remote branch가 만들어지는 것은 아니고 브랜치 포인터만 생기는 거다. 일반 브랜치와의 달리 해당 브랜치는 수정할 수 없다.

mergetool

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s