본문 바로가기

app/git

2. git branch 활용하기

git의 branch는 버전관리라고 생각하면 된다.(로컬에서는 소스상의 버전, 웹에서는 사용자별로도 나뉠수 있다) 

소스를 1.0 버전과 1.1 버전을 나누는 기준이 바로 branch 기능을 이용한 것이다.




1. 먼저 새로운 branch를 생성하는 방법이다. 명령어는  git branch <branch 이름> 으로 new_branch 를 생성해 보았다.

$git branch new_branch


그리고 모든 branch의 확인은 git branch -a 을 하면 현재 생성된 모든 branch를 확인할수 있으며 현재 활성화된 branch는 아이디앞에 별 모양이 표시 된다.(물론 사용중인 폴더 마지막에 (branch이름)으로 표시된다. 위의 화면에서는 master이 활성화 중이다.)

$git branch -a




현재의 상태를 간략하게 그린 그림입니다. 

branch는 master과 new_branch 가 존재 하며 master 로 text 까지 작업했던 도중 new_branch를 생성했다. 

이에 new_branch에도 text가 존재 하게 되었습니다.




2. 사용중인 branch를 바꾸는 명령어는 git checkout <branch 이름>이다. 새로 생성한 new_branch로 바꿔보았다.

$git checkout new_branch

현재 작업중인 폴더 이름의 옆에도 바뀌었고(~/workspace/git_test (new_branch) 로변경되었다.) 

$git branch -a 명령어로 확인해도 new_branch 앞에 별표 모양이 되었다.








3. new_branch 로 파일을 하나 생성하고(test2.txt) 커밋까지 해보았다.

파일 생성후

$git status 

$git add --all

$git commit -m "new_branch commit."






4. 로그를 보면 앞장에서 했던 커밋로그(first commit.)와 3번에서 했던 커밋로그(new_branch commit.)가 보인다.

$git log




현재 상황은 위의 그림과 같다.

branch는 master과 new_branch 가 존재 하며 master 로 text 까지 작업했던 도중 new_branch를 생성했다. 

이에 new_branch에도 text가 존재 하며, text2를 생성하여 커밋을 날린 상황이된다.






5. branch를 master로 바꿔보았습니다.(new_branch -> master) 그리고 기록된 로그를 보면 하나의 로그밖에 없습니다. 아직 master branch로는 커밋을 한번밖에 하지 않았기 때문입니다.






다시 한번 확인해봤습니다. branch를 master로 변경해 보고 폴더를 확인해봅시다.

해당 폴더에는 test 파일 하나가 존재 합니다.

$git checkout master





branch를 다시 new_branch로 변경해봅니다.

똑같은 폴더인데 폴더에는 new_branch로 커밋했던 test2파일까지 존재 합니다.

$git checkout  new_branch


바로 branch의 변경에 따라 git 에서 자동으로 파일들을 관리하고 있는것을 확인할수 있습니다.






6. 마지막으로 파일 하나를 더 추가해줍니다. branch를 master로 변경한 다음 test3파일을 추가 하였습니다.

파일 test3.txt 추가 후

$git add --all

$git commit -m "master commit"




branch는 master과 new_branch 가 존재 하며 master 로 text 까지 작업했던 도중 new_branch를 생성했다. 

(1번 작업내용 입니다.)

이에 new_branch에도 text가 존재 하며, text2를 생성하여 커밋을 날린 상황이된다. (4번까지의 작업내용입니다.)

다시 master로 브랜치를 변경한다음 text3을 생성하였습니다.(6번까지의 작업 내용입니다.)


이렇게 함으로써 브랜치 계정별로 각각의 버전을 효율적으로 관리할수 있도록 도와줍니다.

또한 브랜치 끼리의 병합 및 사용자 별 브랜치 까지 효과적인 버전관리를 도와줍니다.