Skip to content

🪵 Git 브랜칭 정책

최승원 Merry edited this page Oct 19, 2023 · 5 revisions

브랜치

브랜치 명

  • {브랜치 종류}/{이슈 번호}

주 브랜치

  • 구현이 완료되어도 삭제되지 않는 브랜치

종류

브랜치명 설명
main -
develop • main에서 분화되는 브랜치
• 실제 운영 서버에 배포되는 브랜치
• develop-an 브랜치와 develop-be 브랜치가 병합되는 브랜치
• 안드로이드와 백엔드 병합 시 문제가 발생한 경우 해당 브랜치에서 작업
• 안정화되면 main 브랜치로 squash merge를 하고 tag 추가
develop-an • develop에서 분화되는 브랜치
• 개발 서버에 배포되는 브랜치
• 안드로이드 기능 개발 이후 기능들 병합
develop-be • develop에서 분화되는 브랜치
• 개발 서버에 배포되는 브랜치
• 백엔드 기능 개발 이후 기능들을 병합하는 브랜치

보조 브랜치

  • 구현이 완료되면 삭제되는 브랜치
  • feature
    • 각 파트별 develop 브랜치(develop-an, develop-an)에서 분화되는 브랜치
    • 새로운 기능(분배받은 이슈)을 구현하는 브랜치
  • hotfix
    • 운영 서버(main 브랜치)에서 문제가 발생한 경우 이를 해결하기 위한 브랜치
      • 문제란 긴급하게 수정해야 하는 버그, 긴급하게 기능을 추가 배포해야하는 경우, 긴급하게 성능을 개선해야 하는 경우 등 긴급하게 수행해야 하는 작업을 의미한다.
    • main에서 분화되는 브랜치
    • main으로 병합

브랜치 병합 방법

- feature -> develop-an은 squash&merge
- developAn -> develop은 그냥 merge
- develop -> main은 squash&merge

상황별 브랜치 대응 전략

상황 대응
운영 배포용 main
베타 배포용 develop
핫픽스 대응 hotfix
롤백 대응 • main 브랜치에서 이전 버전으로 롤백
• develop 브랜치에서 버그 수정
• 버그 수정이 모두 완료되면 develop 브랜치에 merge
• 배포 준비가 완료되면 develop 브랜치를 main 브랜치로 merge

코드 리뷰 방식

  • 코드리뷰 방식은 파트별로 정하기

PR 컨벤션

  • 제목
    • 기능명
    • 기능은 기능 명세에 따라서 한글로 작성
    • merge 이후에 버그가 발생한 경우 기능 뒤에 수정 붙여서 pr 작성
    • 자신의 파트 라벨을 추가
  • 내용
    • 작업 내용 요약
      • 외부 라이브러리 사용 시 언급
    • 리뷰 시 헷갈릴 수 있는 부분
      • 객관적으로 이해할 수 있을 정도로

커밋 컨벤션

  • 참고 글 기반
  • 태그를 제외한 모든 커밋 메세지는 한글로 작성한다.
  • 단, 고유명사는 영어로 작성한다.
  • 커밋메시지에는 클래스명함수명/메소드명 은 포함하지 않는다.

태그

  • 태그는 소문자
  • : 뒤에만 space가 있음에 유의

종류

태그 이름 설명 사용 예시 부가 설명
feat 새로운 기능을 추가할 경우 feat: 로그인 기능 추가
fix 버그를 고친 경우 fix: 로그인 오류 해결
design CSS 등 사용자 UI 디자인 변경 design: 버튼 색상 변경
!hotfix 급하게 치명적인 버그를 고쳐야하는 경우 !hotfix: 로그인 오류 해결
style 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우
refactor 프로덕션 코드 리팩토링
docs 문서를 수정한 경우 docs: 문서 최신화
test 테스트 추가, 테스트 리팩토링(프로덕션 코드 변경 X) test: 테스트 추가
test: 테스트 리팩토링
테스트코드가 수정된 경우에만 사용한다.
테스트가 모두 통과하는 상태에서만 커밋을 날린다.
comment 필요한 주석 추가 및 변경 comment: 주석 추가
comment: 주석 변경
chore 빌드 태스크 업데이트 (프로덕션 코드 변경 X) chore: gradle 변경
ci CI 관련 작업을 수행한 경우
rename 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 rename: 패키지 이동
rename: 클래스명 변경
remove 파일을 삭제하는 작업만 수행한 경우 remove: ~로 인한 파일 삭제
perf 성능 개선 perf: 경로 조회 알고리즘 개선

라벨

라벨명 설명
all 안드로이드, 백엔드 전체 해당 시
backend 백엔드와 관련된 이슈나 PR에 사용
android 안드로이드와 관련된 이슈나 PR에 사용
feature 기능 추가 시
refactor 기존 기능에 변경이 없는 구현 변경 시
environment 환경설정 변경 시
bug 오류 발생 시
docs 문서 업데이트 시
milestone 마일스톤 관련 작업 시
api api 명세 관련 작업 시
deploy 배포 관련 작업 시
ui ui 관련 작업 시
meeting 회의 일정 등록 시
study 스터디 관련 작업 시
Clone this wiki locally