branch 란?
- 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능
- 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경 가능
- 다른 브랜치와 병합함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있음
새 브랜치 생성하기
$ git branch <branchname>
$ git branch # branch 목록 확인
$ git branch -m new # 현재 branch 이름 변경
$ git branch -m old new # branch 이름 변경
$ git branch --merged # 현재 Checkout 한 브랜치에 Merge 된 브랜치
$ git branch --no-merged # 현재 Checkout 한 브랜치에 Merge 하지 않은 브랜치
브랜치 전환하기
$ git checkout <branch>
# 브랜치 작성과 체크아웃을 한번에 실행
$ git checkout -b <branch>
# checkout을 co로 사용
$ git config --global alias.co checkout
브랜치 병합하기
$ git merge <branchname>
conflict 발생 시 확인 후 수정하여 다시 add, commit
브랜치 삭제하기
$ git branch -d <branchname>
$ git branch -D <branchname> # 합치지 않았지만, 강제 삭제하는 경우
rebase
- 하나의 브랜치가 다른 브랜치에서 파생되서 나온 경우, 다른 브랜치에서 진행된 커밋을 다시 가져와서 base를 재설정하는 것
- 커밋 히스토리를 간결하게 유지할 수 있음
- 많은 사람과 공동 작업하는 경우 권장하지 않음
# master를 base삼아 Rebase
$ git checkout experiment
$ git rebase master
# master브랜치를 Fast-forward
$ git checkout master
$ git merge experiment
feature브랜치에서 a3 커밋을 베이스로 작업을 진행하고 있고, master 브랜치는 이미 상당부분 진행되었음
최신 master 브랜치의 작업 내용을 현재 작업 중인 feature 브랜치에도 적용하고 싶을 때 Rebase 명령어를 사용!!
Git Flow
Main
- 출시 가능한 프로덕션 코드를 모아두는 브랜치
- 프로젝트 시작 시 생성되며, 개발 프로세스 전반에 걸쳐 유지
- 배포된 각 버전을 Tag를 이용해 표시해 둠
Develop
- 다음 버전 개발을 위한 코드를 모아두는 브랜치
- 개발이 완료되면, Main 브랜치로 merge 됨
Feature
- 하나의 기능을 개발하기 위한 브랜치
- Develop 브랜치에서 생성하며, 기능 개발이 완료되면 Develop 브랜치로 merge 됨
- merge 시에는 Fast-Forward로 머지하지 않고, merge commit을 생성하며 merge 해야 함
- 네이밍 : feature/branch-name
Release
- 소프트웨어 배포를 준비하기 위한 브랜치
- Develop 브랜치에서 생성하며, 버전 이름 등의 소소한 데이터를 수정하거나 배포 전 사소한 버그를 수정하기 위해 사용
- 배포 준비가 완료되었다면 Main과 Develop 브랜치에 둘 다 merge 함 (Main 브랜치에는 태그를 이용하여 버전을 표시)
- Release 브랜치를 별도로 사용함으로써, 배포 업무와 관련없는 팀은 병렬적으로 Feature 브랜치에서 기능 개발 가능
- 네이밍 : ex) release/v1.1
Hotfix
- 이미 배포된 버전에 문제가 발생했을 경우, 문제 해결을 위해 사용하는 브랜치
- Main 브랜치에서 생성하며, 문제 해결이 완료되면 Main과 Develop 브랜치에 모두 merge 함
- Hotfix 브랜치를 별도로 사용함으로써, hotfix 업무와 관련없는 팀은 병렬적으로 기능 개발 가능
- 네이밍 : ex) hotfix/v1.0.1
'DevOps' 카테고리의 다른 글
CI/CD(지속적 통합/배포) 정리 (0) | 2024.02.28 |
---|---|
[Git] cherry-pick (0) | 2023.12.01 |
[Git] 커밋 메시지 템플릿 설정 (0) | 2023.11.30 |
[Git] 2. Git 기초 (0) | 2023.08.09 |
[Git] 1. 시작하기 (0) | 2023.07.24 |