일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- express
- JSP
- java
- AWS
- ubuntu
- node
- cordova
- IT 도서
- Android
- Retrofit
- SSH Key
- mean
- rest
- 깃
- gmaps
- Ionic
- 안드로이드
- HTML
- git
- 저장소
- EC2
- ssh
- 자바
- commit
- angularJs
- 인공지능
- Q-Map
- Repository
- Linux
- node.js
- Today
- Total
UroA 개발 블로그
[Git] git-flow 사용하기 본문
[Git] git-flow 사용하기
회사에 일하기 시작한지 4개월째이지만 그동안 회사의 주 프로젝트 보다는 기술 리서치가 주된 프로젝트를 하다보니 단순히 코드 백업을 위해서 git을 사용했었다... 이제 다른 개발자들과 git을 사용하여 협업을 해야하는데 현재 git flow를 사용중이여서 공부 후 이를 기록한다.
https://github.com/nvie/gitflow (gitflow's github) 에서 gitflow를 다음과 같이 소개하고 있다.
Vincent Diessen의 branching model을 적용하여 고수준으로 저장소를 관리할 수 있도록 해주는 확장기능
Vincent의 branching model은 'feature - develop - release - hotfixes - master' 단계로 branch를 나눠서 코드를 관리하는 전략이며, 이를 사용자가 쉽게 접근하고 사용할 수 있도록 확장 기능(명령어)을 제공하는 것이 gitflow다. (git flow는 branch 관리를 위한 확장 명령어를 제공하는 역할만 하기 때문에 기존의 git 명령어로도 이를 그대로 구현할 수 있다. 결국 일련의 작업을 한번에 처리해 주는 역할을 하는것이 git flow이다.)
Setup
먼저 제대로 동작하는 git이 설치되어 있어야 한다. Git flow는 OSX, Linux, Windows에서 동작한다.
- OSX
$ brew install git-flow-avh
- Linux
$ apt-get install git-flow
Getting Started
기존 git 저장소 내에서 초기화하는 것으로 git-flow의 사용을 시작할 수 있다. 명령어를 실행하고 나면 자동으로 master 외에 develop branch가 생성되며, 기본적으로 develop branch에서 개발하고, master로 release하는 방식이다.
$ git flow init
* gitflow를 이용해서 만들 수 있는 branch는 모두 6종류가 있다.
- master : 최종 릴리즈에 사용되는 안정된 버전
- develop : 다음 릴리즈를 위해 개발중인 최신 버전
- feature : 특정 기능 개발을 위한 branch
- release : 릴리즈 점검을 위한 branch
- hotfix : 긴급 버그 픽스를 위한 branch
- support : 버전 호환성 문제를 처리하기 위한 branch
* git flow init 명령어를 실행하면 프로세스 별로 사용할 branch 이름을 입력하라는 메시지가 뜬다. 그러나 -d 옵션을 주어 git flow init -d 명령어로 실행하면 이 과정을 생략할 수 있다.
Features
- 특정한 기능을 개발하기 위한 branch가 필요한 경우에는 feature를 이용한다.
$ git flow feature start <branch name>
위 명령어를 수행하면 새로운 기능 개발을 위한 branch가 "feature/branch name" 이라는 이름으로 생성되고, 자동으로 해당 branch로 checkout 된다.
- 해당 branch에서 작업을 진행하다가 기능이 완료된다면 해당 명령어를 통해 git flow에 이 사실을 알린다.
$ git flow feature finish <branch name>
feature finish 명령어가 실행되면 (1) git flow는 develop branch로 checkout 한 후, (2) feature branch의 변경 내용을 자동으로 develop branch에 merge하고, (3) 작업이 끝난 feature branch를 삭제한다.
- 해당 branch를 여러 개발자와 공동으로 개발하고 싶다면 원격 서버에 게시하면 된다.
$ git flow feature publish <branch name>
- 다른 사용자가 게시한 기능을 가져오는 명령어는 다음과 같다.
$ git flow feature pull origin <branch name>
- 만약 해당 branch를 merge 하지않고 삭제한다면 다음과 같이 명령어를 입력한다.
$ git branch -D <branch name>
Release
- release start를 하면 develop branch의 내용을 기반으로 release/<branch name>의 이름을 갖는 새로운 branch를 하나 생성하여 checkout 한다. (release branch는 보통 릴리즈 점검을 위해 간단한 버그를 수정하는 작업 등의 목적으로 사용한다.)
$ git flow release start <version>
- release를 위한 점검이 끝났으면 release를 finish 한다.
$ git flow release finish <verison>
release finish 명렁어가 실행되면 (1) release 브랜치 코드를 master branch에 merge 한 후, (2) release의 이름으로 태그를 등록, (3) release를 develop branch로 재병합(back-merge), (4) release branch를 삭제한다.
* gitflow 참고 사이트
http://danielkummer.github.io/git-flow-cheatsheet/index.ko_KR.html (git-flow cheatsheet)
http://huns.me/development/1131 ([Review] gitflow, 쉬운 git branch 관리)
'Programming > Git' 카테고리의 다른 글
[Git] 초기 설정 & 새 저장소 만들기 & 파일 커밋(Commit)하기 (0) | 2016.04.13 |
---|---|
[Git] Git의 기본 (0) | 2016.04.12 |
[Git] MAC의 터미널 프롬프트에 Git의 Branch 이름 추가하기 (0) | 2016.04.07 |