Branch
분기점을 생성하여 독립적으로 코드를 변경할 수 있도록 도와주는 모델
- 현재 사용가능한 branch들과 현재 local branch를 보여줌
$ git branch
$ git branch yongwoo
- 현재 branch를 yongwoo라는 branch로 이동
$ git switch yongwoo
- readme.md 파일을 수정하고 commit
$ git commit -a -m 'edit readme.md'
- 현재 branch를 main branch로 이동
$ git switch main
- 현재 branch로 명시된 브랜치(yongwoo branch)를 합침
$ git merge yongwoo
$ git branch -D yongwoo
- yongwoo remote branch를 push
$ git push origin yongwoo
branching models
- git flow
- (hotfix)- master -(release)- develop - feature
- pros: 가장 많이 적용, 각 단계가 명확히 구분
- cons: 복잡..
- github flow
- master - feature
- pros: 브랜치 모델 단순화, master의 모든 커밋은 deployable
- cons: CI 의존성 높음. 누구 하나라도 실수했다간..(pull request로 방지)
- gitlab flow
- production - pre-production - master - feature
- pros: deploy, issue에 대한 대응이 가능하도록 보완
- cons: git flow와 반대 (master-develop, production-master)
git flow strategy
git flow 사용법
- git 저장소를 git flow에 맞게 초기화하기
$ git flow init
- 버그 수정 / 기능 추가를 위해 새로운 개발 (project_init) 브랜치 사용하기
$ git flow feature start project_init
- 개발 작업이 끝나서 project_init 브랜치를 마무리하기
$ git flow feature finish project_init
- release branch 생성하기 (0.1버전 생성)
$ git flow release start v0.1
- release 준비 끝나면 finish를 통해 마무리하기
$ git flow release finish v0.1
- 새로운 release가 포함된 main branch를 원격 저장소에 태그와 함께 push (현재는 develop branch)
$ git push -u origin develop
$ git push origin main
$ git push --tags