본문 바로가기
Tools for Dev

Branch Management in GIT

by leanu 2009. 4. 29.

Introduction

Branch 를 자유자재로 쓰기위한 기본단계로, 서버단의 branch 를 생성하고 서버의 branch 를 가져오는 방법을 기술하고자 한다. 설명을 좀 쉽게 하기 위해 git push를 하는 곳을 서버라 하고, 서버로 부터 내용을 받아오는 곳을 클라이언트라 가정한다.




Description


0. branch 관련 기본 명령어

   - branch 생성 : git branch [branch이름]
   - branch 변경 : git checkout [branch이름]
   - branch list 보기 : git branch 또는 git branch -a

     (예) 클라이언트에서 만약 서버의 모든 branch 를 보고 싶으면 git branch -a를 하면 된다. 앞에 origin/ 으로 된 것이 서버쪽의 branch list 이다. (버전 1.6.3.1에서는 remotes/origin/ 으로 보임)이 이는 hidden value 이기 때문에 -a 옵션을 주어야 나온다. * 가 붙은 branch 는 현재 내가 있는 곳이다. 단 변경된 사항을 먼저 받고 ( git fetch 나 git pull ) git branch -a 를 해야 최근의 리스트가 나온다.
          $ git branch -a
          * master
             origin/HEAD
             origin/branchtest
             origin/master




1. 서버에 branch를 생성하는 방법 : 서버에 생성을 하는 것으로 아직 클라이언트에는 branch가 만들어지지 않는다.

   $ git push origin [올리고자 하는 branch이름]:[target branch이름]

현재 작업하고 있는 branch 가 project 1 이고 서버의 branchtest 라는 branch 에 올리고 싶은경우 다음과 같이 하면된다.

   (예) $ git push origin project1:branchtest

 

2. 서버쪽 branch를 복사하는 방법 : 클라이언트에 branch 를 생성한 후 서버의 branch 안의 내용을 복사한다.

merge 할 branch로 이동한다.
   $ git checkout [branch name]

   $ git fetch
   $ git merge origin/[가져올 remote branch]

또는

   $ git pull origin/[가져올 remote branch]

   (예) $ git checkout project1
          $ git pull origin/branchtest



3. 현재까지의 변화를 서버쪽 branch 에 적용시키는 방법 : 클라이언트의 적용시키길 원하는 branch 로 이동후 add, commit, push 를 하면 된다. 기존에 master 에서 소스 올릴때 하는것과 동일하다.


p.s 만약 clone 명령을 통해 서버의 내용을 받아오는경우, 서버가 현재 속해있는 branch 만을 가져온다.

댓글