브랜치와 병합
4. 응용 변형 예제
4.1 브랜치 이름으로 성격 구분하기
git switch -c feature/PROJ-123-login-form
git switch -c fix/PROJ-140-null-check
git switch -c hotfix/PROJ-201-payment-crash이슈 번호를 브랜치 이름에 넣으면 git branch -a 목록만 봐도 어떤 작업인지 알 수 있습니다. hotfix 는 운영 중 긴급 수정 전용으로 따로 구분합니다.
4.2 긴급 수정을 두 브랜치에 모두 반영하기
git switch -c hotfix/payment-crash main # 수정, 커밋 후
git switch main && git merge --no-ff hotfix/payment-crash
git switch develop && git merge --no-ff hotfix/payment-crash운영 중 발견한 버그는 main 에서 바로 hotfix 브랜치를 파고, 고친 뒤 main 과 develop 양쪽에 병합합니다. develop 에만 반영하면 다음 배포까지 운영 버그가 남습니다.
4.3 병합 전 최신 main 반영하기
feature 브랜치가 오래 살아 있으면 main 이 많이 앞서 나갑니다. git switch feature/login && git merge main 으로 병합 전 main 내용을 feature 로 먼저 당겨와 충돌을 미리 작은 단위로 처리합니다. git rebase 로도 같은 목적을 이룰 수 있지만 별도로 다룰 주제입니다.
4.4 --squash 로 커밋을 하나로 정리해 합치기
git switch main
git merge --squash feature/experiment
git commit -m "실험 기능 통합"feature 브랜치의 커밋이 시행착오로 지저분할 때, --squash 는 변경 내용만 스테이징에 올리고 커밋은 만들지 않습니다. 직접 커밋 하나로 묶어 main 히스토리를 깔끔하게 유지합니다.
4.5 병합된 브랜치 일괄 정리
git branch --merged main | grep -v '\* main' | xargs -r git branch -d--merged main 목록에서 main 자신을 뺀 나머지를 xargs 로 한 번에 지웁니다. 정기적으로 돌리면 병합이 끝난 브랜치가 쌓이지 않습니다.