[정보] Git을 이용한 형상관리 #3 - Git 브랜치
안녕하세요 남산돈가스입니다.
지난 포스팅에 이어 마지막시간으로 Git 브랜치에 대해서 포스팅해보겠습니다.
지난 시간 저희는 Git 저장소를 생성하고 커밋까지 해보았습니다. 이제 조금 더 완전한 버전 관리를 위하여 브랜치에 대해서 알아보도록 하겠습니다.
프로젝트 단위로 개발을 하다 보면 반영되어있는 코드와는 상관없이 독립적으로 개발을 진행할 경우가 생기는데, 이렇게 독립적으로 개발하는 것이 브랜치입니다.
Git에서의 브랜치는 커밋 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것이다.
기본적으로 Git은 최초 생성 시 master 브랜치를 만들고. 커밋을 만들 때 마다 브랜치가 자동으로 가장 마지막 커밋을 가리키게 됩니다.
위에 보이는 그림처럼 master라는 브랜치가 생성이 되고 그 마스터는 항상 최종 커밋의 위치를 가리키고 있습니다. 그리고 위에 HEAD는 원격 저장소에 최신 버전을 가리키고 있다는 의미인데요. 최초에 master로 브랜치 설정이 되어있으니 HEAD가 바라보는 건 master가 되겠죠.
설명을 길게 하기 보다는 실제로 만들면서 확인해봅시다.
현재 자신의 브랜치가 어떤 것인지 확인해보기 위해서 명령어를 입력해봅시다.
git branch 명령어를 입력하면 현재 바라보고있는 브랜치를 보여줍니다. 현재 저는 master를 보고있습니다.
여기서 새로운 브랜치 testing을 하나 만들어보겠습니다.
git branch testing 명령을 통해 브랜치를 생성했습니다. 이 브랜치도 역시 현재 작업중이었던 마지막 커밋을 가리키는 브랜치입니다.
그럼 여기까지 testing이라는 새로운 브랜치를 생성해보았습니다. 현재까지 작업 된 master 브랜치는 그대로 두고 다른 개발 사항이 생겨 testing 브랜치에 개발을 진행해보겠습니다.
현재 master로 되어있는 브랜치를 testing으로 이동하려면 checkout 명령어를 이용합니다.
testing 브랜치로 이동하게 되면 이제 HEAD는 testing을 바라보게 됩니다.
이제 testing 브랜치에서 파일을 변경하고 커밋을 해보자
testing의 새로운 커밋으로 앞으로 이동한 것을 확인하실 수 있습니다. 그리고 master 브랜치는 여전히 이전 커밋을 가리키고있는 것도 확인하실 수 있습니다. 그럼 여기서 다시 checkout 명령을 이용해 master 브랜치로 이동하면 testing 이전의 커밋 상태인 master 시점의 상태로 돌아가게 됩니다. 여기서 Git 브랜치의 편리성을 느낄 수 있을 것입니다.
브랜치 별로 해당 위치를 기억하고 자유롭게 이동할 수 있는 것이 Git 브랜치의 가장 큰 장점이라고 할 수 있습니다.
위의 글은 Pro Git2 서적을 참고하여 작성하였습니다.
이글의 원문은 https://progit2.s3.amazonaws.com/ko/2015-07-08-5c390/progit-ko.582.pdf 를 참고하시기 바랍니다.
지난 포스팅에 이어 마지막시간으로 Git 브랜치에 대해서 포스팅해보겠습니다.
지난 시간 저희는 Git 저장소를 생성하고 커밋까지 해보았습니다. 이제 조금 더 완전한 버전 관리를 위하여 브랜치에 대해서 알아보도록 하겠습니다.
프로젝트 단위로 개발을 하다 보면 반영되어있는 코드와는 상관없이 독립적으로 개발을 진행할 경우가 생기는데, 이렇게 독립적으로 개발하는 것이 브랜치입니다.
Git에서의 브랜치는 커밋 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것이다.
기본적으로 Git은 최초 생성 시 master 브랜치를 만들고. 커밋을 만들 때 마다 브랜치가 자동으로 가장 마지막 커밋을 가리키게 됩니다.
위에 보이는 그림처럼 master라는 브랜치가 생성이 되고 그 마스터는 항상 최종 커밋의 위치를 가리키고 있습니다. 그리고 위에 HEAD는 원격 저장소에 최신 버전을 가리키고 있다는 의미인데요. 최초에 master로 브랜치 설정이 되어있으니 HEAD가 바라보는 건 master가 되겠죠.
설명을 길게 하기 보다는 실제로 만들면서 확인해봅시다.
현재 자신의 브랜치가 어떤 것인지 확인해보기 위해서 명령어를 입력해봅시다.
$ git branch
* master
git branch 명령어를 입력하면 현재 바라보고있는 브랜치를 보여줍니다. 현재 저는 master를 보고있습니다.
여기서 새로운 브랜치 testing을 하나 만들어보겠습니다.
$ git branch testing
$ git branch
* master
testing
git branch testing 명령을 통해 브랜치를 생성했습니다. 이 브랜치도 역시 현재 작업중이었던 마지막 커밋을 가리키는 브랜치입니다.
그럼 여기까지 testing이라는 새로운 브랜치를 생성해보았습니다. 현재까지 작업 된 master 브랜치는 그대로 두고 다른 개발 사항이 생겨 testing 브랜치에 개발을 진행해보겠습니다.
현재 master로 되어있는 브랜치를 testing으로 이동하려면 checkout 명령어를 이용합니다.
$ git checkout testing
testing 브랜치로 이동하게 되면 이제 HEAD는 testing을 바라보게 됩니다.
이제 testing 브랜치에서 파일을 변경하고 커밋을 해보자
$ git status On branch testing Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: dev-ndp-api/app.js new file: dev-ndp-api/npm-debug.log Untracked files: (use "git add <file>..." to include in what will be committed) dev-ndp-api/npm-debug.log.3971074741 $ git commit -a -m 'testing first Commit!!' [testing eeb6a13] testing first Commit!! 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 dev-ndp-api/npm-debug.log
testing의 새로운 커밋으로 앞으로 이동한 것을 확인하실 수 있습니다. 그리고 master 브랜치는 여전히 이전 커밋을 가리키고있는 것도 확인하실 수 있습니다. 그럼 여기서 다시 checkout 명령을 이용해 master 브랜치로 이동하면 testing 이전의 커밋 상태인 master 시점의 상태로 돌아가게 됩니다. 여기서 Git 브랜치의 편리성을 느낄 수 있을 것입니다.
브랜치 별로 해당 위치를 기억하고 자유롭게 이동할 수 있는 것이 Git 브랜치의 가장 큰 장점이라고 할 수 있습니다.
Git Branching 전략으로는 Git Flow가 있는데요. (다른 것들도 많습니다.)
답글삭제우아한형제들(배민)에서 하는 글 링크 (http://woowabros.github.io/experience/2017/10/30/baemin-mobile-git-branch-strategy.html) 드려봅니다.