Git 브렌치 전략
Git을 효율적으로 사용하기 위해서는 Git의 브렌치를 전략적으로 사용해야합니다.
그것을 바로 Git 브렌치 전략 이라고 합니다.
다음은 전통적인 Git Flow구조입니다.
구조를 단순화하면 아래와 같습니다.
main
│
└── develop
├── feature/login
├── feature/payment
├── bugfix/fix-login-issue
└── release/v1.0.0
feature이나 bugfix나 release는 develop에 병합시키면되고
develop은 main에 병합시키면됩니다. 이게 다입니다.
최종적으로 main을 배포한다고 보면됩니다.
1. main
설명 : 배포 가능한 상태의 코드가 위치합니다. 최종적으로 병합되어 세상밖으로 보여지는 브렌치라고 보면됩니다.
용도 : 프로덕션에 배포할 준비가 된 안정적인 코드
git checkout main
기본 브렌치인데 없으면 아래코드로 생성
git checkout -b main
2. develop
설명 : 기능 개발이 이루어지는 기본 브렌치 입니다. 각 기능 브렌치로부터 merge만 받는 브렌치라고 보면됩니다.
용도 : 새로운 기능 개발 및 버그 수정이 이루어지는 곳으로, 테스트가 완료되면 main 으로 병합됩니다.
git checkout -b develop
병합은 항상 아래와 같이 하면됩니다.
git checkout main
git merge develop
3. feature/
설명 : 새로운 기능을 개발하기 위한 브렌치입니다. 해당 기능에 맞게 브렌치를 생성하면됩니다. 개발자를 기능별로 배정하여 담당 브렌치를 지정해줍니다.
용도 : 각 기능별로 브렌치를 생성하고 작업하고, 완료되면 develop 브렌치에 병합합니다.
예시 : feature/login , feature/payment , feature/user-profile
git checkout -b feature/login
병합은 항상 아래와 같이 하면됩니다.
git checkout develop
git merge feature/login
4. bugfix/
설명 : 버그 수정을 위한 브렌치입니다. 버그를 발견하면 해당 버그명에 맞게 브렌치를 생성하면 됩니다.
용도 : 발견된 버그를 수정하고, 완료되면 develop 브렌치에 병합합니다.
예시 : bugfix/fix-login-issue , bugfix/fix-ui-bug
git checkout -b bugfix/fix-login-issue
병합은 항상 아래와 같이 하면됩니다
git checkout develop
git merge bugfix/fix-login-issue
5. release/
설명 : 배포 준비를 위한 브랜치입니다. 버전에 맞게 브렌치를 생성하면됩니다.
용도 : 배포 전 최종 테스트 및 버그 수정을 진행하며, 완료되면 main 과 develop 에 병합합니다.
예시 : release/v1.0.0 , release/v1.1.0
git checkout -b release/v1.0.0
병합은 항상 아래와 같이 하면됩니다
git checkout main
git merge release/v1.0.0
6. hotfix/
설명 : 프로덕션에서 발견된 긴급한 버그 수정을 위한 브렌치입니다. 마찬가지로 버그잡을때 버그이름에 맞게 브렌치를 생성하면됩니다.
용도 : 직접 main에서 파생되어 수정 후, main 과 delvelop 모두에 병합됩니다.
예시 : hotfix/fix-critical-bug
git checkout -b hotfix/fix-critical-bug
병합은 항상 아래와 같이 하면됩니다.
git checkout main
git merge hotfix/fix-critical-bug
git checkout develop
git merge hotfix/fix-critical-bug
'DevOps > 🌌 Git' 카테고리의 다른 글
Git | 특정브렌치만 clone하는법 (0) | 2024.03.13 |
---|---|
[Git] 외부 톰캣, 이클립스 윈도우 자동배포 (0) | 2023.09.25 |
GIT | GitHUB,README.md,마크다운,push,.gitignore,pull,fetch,reset,revert (0) | 2022.11.01 |
GIT | CMDER (0) | 2022.11.01 |