그 외/Git
Pull Request (PR) / 브랜치 네이밍 / 커밋 메세지 규칙
sonoopy
2024. 11. 12. 23:45
Git이란?
코드 버전을 관리하고 협업할 수 있도록 도와주는 코드 형상 관리 시스템(VCS)
로컬에 전체 저장소 복사본을 보유하여 인터넷 연결 없이 작업이 가능
기존의 중앙집중형 SVN과 다르게 분산형 버전 관리 시스템(DVCS)
GitHub Pull Request (PR) 생성
Pull Request(PR)는 특정 브랜치의 변경 사항을 코드 리뷰를 거쳐 main 브랜치에 병합
1. 새 브랜치 생성
main 브랜치에서 기능 구현이나 버그 수정을 위해 새 브랜치를 생성
git checkout -b feature/new-feature
2. 작업 후 커밋 및 푸시
변경 내용을 작업한 후 커밋하고 원격 저장소에 푸시
git add . git commit -m "Add new feature" git push origin feature/new-feature
3. PR 생성
GitHub에서 해당 브랜치의 Pull Request 버튼을 클릭 후, Base branch와 Compare branch 선택
- Base는 병합할 브랜치 (예: main), Compare는 작업한 브랜치 (예: feature/new-feature)
4. PR 제목 및 설명 작성
- Title: PR 제목은 간결하고 핵심적으로 작성
- Description: PR의 목적과 내용 (코드 변경의 이유, 주요 변경 사항, 관련 이슈 번호 등을 포함)
- 리뷰어 및 라벨 지정 : 코드 검토를 요청할 리뷰어를 지정하고 bug fix, enhancement 같은 라벨을 추가해 PR의 성격 표시
- PR 제출 : Create Pull request 버튼을 클릭하여 PR을 제출
코드 리뷰 및 피드백
PR이 생성되면, 리뷰어는 변경 내용을 검토하고, 코드에 피드백을 남길 수 있음.
피드백을 통해 코드 수정이 필요한 경우 Request Changes로 요청할 수 있으며, 문제가 없다면 Approve로 승인
PR 병합 방식
- Create a merge commit : 별도의 커밋을 생성하여 병합 기록을 남김
- Squash and merge : 여러 커밋을 하나의 커밋으로 합쳐 병합
- Rebase and merge : 변경 사항을 순차적으로 병합하여 기록을 단순화
브랜치 전략
Git-Flow : 실무에서 자주 사용되는 Git 브랜치 전략
주요 브랜치
- master(main): 최종 배포 버전 브랜치
- develop: 모든 기능이 합쳐지는 메인 개발 브랜치
- feature: 새로운 기능 개발을 위한 브랜치 (ex: feature/로그인)
- release: 배포 준비 중인 버전을 관리하는 브랜치 (ex: release-1.2)
- hotfix: 배포된 버전에 긴급 수정이 필요할 때 사용하는 브랜치 (ex: hotfix-1.2.1)
브랜치 네이밍
1) main branch, develop branch
main과 develop 브랜치는 본래 이름 그대로 사용하는 경우가 일반적
2) feature branch
- 어떤 이름도 가능 (단, master, develop, release-..., hotfix-... 같은 이름은 사용 불가)
- feature/티켓번호_기능요약 (ex: feature/1_회원가입)
3) release branch
- release-RB_... 또는 release-... 또는 release/...같은 이름이 일반적
- release/버전번호 (ex: release/1.0.0)
4) hotfix branch
- hotfix/버전번호_기능요약 (ex: hotfix/1.0.1_로그인_버그수정)
커밋 메시지 예시
[티켓번호] 티켓명 또는 기능명
- 상세 내용 1
- 상세 내용 2
# 이슈번호
커밋 타입
feat | 새로운 기능 추가 |
fix | 버그 수정 |
docs | 문서 수정 (예: README.md, 주석 등) |
style | 코드 스타일이나 포맷 변경 |
refactor | 기능 변경 없이 코드 구조 개선 |
perf | 성능 개선 |
test | 테스트 코드 추가 또는 수정 |
build | 빌드 시스템 수정 |
ci | CI 설정 수정 |
chore | 기타 자잘한 수정 |
revert | 이전 커밋 되돌리기 |
<브랜치 타입>/<이슈 번호 또는 작업 내용>
feature | 새로운 기능을 추가할 때 | feature/43-login-feature |
fix | 버그를 수정할 때 | fix/105-navbar-bug |
hotfix | 긴급하게 수정이 필요한 버그를 해결할 때 | hotfix/checkout-error |
chore | 코드 정리, 설정 변경 등 사소한 작업 시 | chore/update-eslint-rules |
docs | 문서 변경 시 (예: README 수정) | docs/update-readme |
test | 테스트 코드 추가나 수정 시 | test/user-service-tests |
refactor | 코드 리팩토링 작업 시 | refactor/authentication-service |
ci | CI/CD 설정 변경 시 | ci/update-github-actions |