브랜치 파생
모든 새로운 브랜치는 최신 dev 브랜치에서 분기시킨다.
(이후 dev 브랜치의 변경사항을 기반으로 각 기능/수정 작업을 진행한다.)
PR 비교 대상 브랜치
feat/* → dev
로 설정한다.fix/* → dev
로 설정한다.refactor/*
브랜치로 작업하며, 비교 대상 역시 dev 브랜치로 설정한다.사용 브랜치
main
: 최종 배포 대상 브랜치. 한 페이지 또는 기능이 완전히 완성되었을 때에만 dev 브랜치의 내용을 merge하여 업데이트한다.dev
: 개발 통합 브랜치. 모든 기능 개발, 수정, 개선 작업은 먼저 dev 브랜치로 merge되며, 이후 검증 후 main에 반영한다.feat/*
: 기능 개발 브랜치 (예: 모달 구현, 페이지 구현 등)
feat/지라티켓번호/작업이름
feat/EP-7/auth-page
fix/*
: 긴급 수정 브랜치 (예: 로그인 오류 처리 등)
fix/지라티켓번호/작업이름
fix/EP-2/login-validate
refactor/*
: 코드, UX, DX 개선 브랜치 (예: 함수 추상화, 유틸리티 함수 개선, 비즈니스 로직 개선 등)
refactor/지라티켓번호/작업이름
refactor/EP-13/landing-page-cls
PR의 검토가 완료되면, PR 생성자는 dev 브랜치에 squash and merge 방식으로 병합한다.
원격 레포와 로컬 레포 간 base 커밋 히스토리가 달라질 경우, 로컬 작업 브랜치를 최신 dev 브랜치로 rebase하여 PR을 생성한다.
a → b → c
가 되었고, B는 feat/기능개발
브랜치에서 작업해 히스토리가 a → b → d → e
인 경우,
B의 브랜치는 a → b → c → d’ → e’
가 되도록 rebase해야 한다.rebase 방법
현재 체크아웃 된 브랜치가 feat/기능개발 이라고 가정한다.
# 현재 체크아웃된 브랜치가 feat/기능개발 이라고 가정
git fetch origin dev # 원격 레포의 dev 브랜치 가져오기
git rebase origin/dev # 가져온 원격 dev 브랜치를 base로 설정하기
# 충돌 발생 시:
git add . # 변경사항 스테이징 영역에 추가
git rebase --continue # 충돌 해결 후 rebase 계속 진행
# rebase 중단을 원한다면:
git rebase --abort # rebase 취소
같은 파일 수정으로 인한 충돌이 발생하면 일반 Merge 방식을 사용하여 충돌 해결 후 PR 병합을 진행한다.
예시: dev 브랜치를 덮어 씌운다고 가정
git fetch origin dev # 원격 레포의 dev 브랜치 가져오기
git checkout dev # 내 로컬의 dev 브랜치로 이동
git reset --hard origin/dev # 로컬 dev 브랜치의 브랜치 포인터를 원격 dev 브랜치로 재설정
git stash
명령어를 사용한다.feat/Modal
이라고 가정
# 검토용으로 새로운 브랜치 생성(또는 기존 브랜치로 이동)
git checkout -b feat/Modal
git fetch origin feat/Modal # 원격 레포의 feat/Modal 브랜치 가져오기
git reset --hard origin/feat/Modal # 로컬 브랜치를 원격 브랜치 상태로 덮어 씌우기
git stash pop
으로 임시 변경사항을 복원한다.