1. Working Directory (작업영역)
2. Repository (저장소)
3. Index (Staging Area)
4. Stash
1. Master Branch :
It can be released for a product and updated version by merging with Develop Branch
제품으로 출시될 수 있는 브랜치, Develop브랜치와 병합하며 버전을 관리
2. Develop Branch :
It develop(add functions and modify bug) the Next Release Version
다음 출시 버전을 개발하는 브랜치
기능들이 추가되고 버그가 수정되어 배포하기에 안정적인 상태라면 Develop브랜치를 Master브랜치에 병합한다.
평소에는 이 브랜치를 기반으로 개발을 진행한다.
3. Feature Branch :
It develop a function and if the development is completed, it is merged Develop Branch
기능을 개발하는 브랜치, 개발이 완료되면 Develop브랜치에 병합하여 다른 개발자들과 공유
$ git checkout -b [feature_branch] [develop_branch]
// Develop브랜치로부터 Feature브랜치를 분기함
$ git checkout [develop_branch]
// 새로운 기능에 대한 모든 작업을 마친 후, Develop브랜치로 이동
$ git rebase
// Feature브랜치에서 작업한 내용을 Develop브랜치로 병합
$ git branch -d [branch_name]
// Feature브랜치 삭제
4. Release Branch :
It get ready for current release
이번 출시 버전을 준비하는 브랜치
Develop에서 배포할 수준의 기능과 성능이 모이거나, 정해진 배포 일정이 되면 Release브랜치를 분기한다.
$ git checkout -b [release_version] [developbranch]
Release브랜치에서는 버그수정 및 문서추가 등을 작업한다. 그리고 새로운 기능을 추가로 병합하지 않는다. (새로운 기능을 추가 : Develop브랜치의 역할)
Release브랜치에서 배포 가능한 상태가 되면, Master브랜치(병합한 commit에 Release버전 태그 부여)와 Develop브랜치에 병합한다.
(배포를 준비하는 동안 변경된 내용을 Develop에도 반영시켜주어야 한다.)
$ git checkout [master_branch]
$ git rebase**// Master브랜치에 병합
$ git tag -a [tag_text]
// 병합한 commit에 태그를 부여
$ git checkout [develop_branch]
$ git rebase
// Develop브랜치에 병합
$ git branch -d [branch_name]
// Release브랜치 삭제
위와 같이 배포 준비를 하는 동안, Develop브랜치에서는 다음 배포를 위한 개발을 계속 진행한다.
5. Hotfix Branch :
It modify Bug that is occurred at Release Version(Master Branch)
출시버전(Master브랜치)에서 발생한 버그를 수정
6. Process of Branchs
3-way merge : base, feature, master = new one
we should often checkout/daily build but also, will get a lot of merge commit.
It is not good when check a issue later because the history is dirty.
Therefore, recommend to use 'rebase' instead of 'merge'.
########## Will continue to add and edit ###########