Skip to content

FE_Git Convention

yeeun park edited this page Jul 12, 2025 · 5 revisions

📝 커밋 메시지 컨벤션

✅

1. 커밋 유형 지정

  • 커밋 유형은 영어 대문자로 작성한다
커밋 유형 의미
Feat 새로운 기능 추가
Fix 버그 수정
Docs 문서 수정
Style 코드 formatting, 세미콜론 누락, 코드 자체의 변경이 없는 경우
Refactor 코드 리팩토링
Test 테스트 코드, 리팩토링 테스트 코드 추가
Chore 패키지 매니저 수정, 그 외 기타 수정 ex) .gitignore
Design CSS 등 사용자 UI 디자인 변경
Comment 필요한 주석 추가 및 변경
Rename 파일 또는 폴더 명을 수정하거나 옮기는 작업만인 경우
Remove 파일을 삭제하는 작업만 수행한 경우
!BREAKING CHANGE 커다란 API 변경의 경우
!HOTFIX 급하게 치명적인 버그를 고쳐야 하는 경우

2. 제목과 본문을 빈행으로 분리

  • 커밋 유형 이후 제목과 본문은 한글로 작성하여 내용이 잘 전달될 수 있도록 할 것
  • 본문에는 변경한 내용과 이유 설명 (어떻게보다는 무엇 & 왜를 설명)

3. 제목 첫 글자는 대문자로, 끝에는 . 금지


4. 제목은 영문 기준 50자 이내로 할 것


5. 자신의 코드가 직관적으로 바로 파악할 수 있다고 생각하지 말자


6. 여러가지 항목이 있다면 글머리 기호를 통해 가독성 높이기

- 변경 내용 1
- 변경 내용 2
- 변경 내용 3

# 🌿 브랜치 전략 & 네이밍 컨벤션

✅

1. 브랜치 전략

  • main 브랜치는 배포용(branch protection 적용) 으로 직접 커밋하거나 푸시하지 않는다. (Lock)
  • 모든 개발은 develop 브랜치를 기준으로 이루어진다.
  • 기능 단위로 develop에서 브랜치를 파생하여 작업하고, 작업 완료 후 develop 브랜치에 병합한다.
  • 병합 전에는 Pull Request(PR) 를 통해 코드 리뷰 과정을 거친다.

2. 브랜치 네이밍 규칙

  • 브랜치 이름은 영문 소문자로 작성하고, 슬래시(/)를 이용해 유형/기능 형태로 명시한다.
브랜치 유형 접두어 예시 설명
기능 개발 feature/ 새로운 기능을 개발할 때 사용
버그 수정 fix/ 버그를 수정할 때 사용
문서 수정 docs/ 문서 관련 작업 시 사용
리팩토링 refactor/ 코드 구조 개선 시 사용
디자인 변경 design/ UI, 스타일 변경 작업 시 사용
테스트 코드 test/ 테스트 관련 코드 작성 시 사용
기타 작업 chore/ 설정 파일, 빌드 등 기타 작업

예시:

  • feature/mainPage: 메인 페이지 기능 개발
  • fix/loginError: 로그인 오류 수정
  • refactor/navbar: 내비게이션 리팩토링

3. 브랜치 병합 흐름

  1. develop 브랜치로부터 기능 브랜치를 생성
  2. 브랜치에서 개발 작업 수행
  3. 작업 완료 후, develop 브랜치에 Pull Request 생성
  4. 코드 리뷰 및 테스트 완료 후 develop 브랜치에 병합
  5. 주요 배포 시점에 develop 브랜치를 main 브랜치에 병합 (배포 태그 포함)

4. 주의사항

  • main 브랜치에는 직접 푸시 금지 (보호 설정 필수)
  • 브랜치 이름은 간결하고 명확하게 작성
  • 커밋 메시지는 커밋 메시지 컨벤션에 따를 것
  • 여러 작업을 한 브랜치에 몰아서 작업하지 말고, 기능별로 분리할 것

5. 예시 브랜치 시나리오

# 기능 브랜치 생성
git checkout develop
git checkout -b feature/signupPage

# 작업 완료 후
git add .
git commit -m "Feat: 회원가입 페이지 UI 구성"

# 원격에 기능 브랜치 push
git push origin feature/signupPage

# develop 브랜치에 PR 생성
# 코드리뷰 후 merge

🌿 이슈 관리 전략 & 사용법

✅

1. 이슈 생성 및 관리 원칙

  • 모든 작업(기능 개발, 버그 수정, 문서 작업 등)은 반드시 이슈(issue)로 등록하여 관리한다.
  • 이슈는 작업의 목적, 범위, 예상 결과를 명확히 작성한다.
  • 이슈는 작업 유형에 따라 label(예: feature, bug, docs 등)을 지정한다.

2. 이슈 생성 방법

  1. GitHub(또는 사용하는 Git 플랫폼)에서 New Issue 버튼을 클릭한다.
  2. 제목은 간결하게, 내용에는 작업 목적 및 상세 설명을 작성한다.
  3. 적절한 label을 선택하고, 필요하다면 assignee(담당자)를 지정한다.

3. 브랜치와 이슈 연결

스크린샷 2025-07-10 오후 11 12 10 여기서 오른쪽 하단에 create a branch 클릭 스크린샷 2025-07-10 오후 11 14 09 branch source는 develop으로 설정 후 생성 스크린샷 2025-07-10 오후 11 14 52
git fetch origin
git checkout feature/mainPage

해당 명령어 터미널에 복붙 후 브랜치 사용


4. 이슈와 Pull Request(PR) 연결

  • 작업 완료 후, develop 브랜치로 Pull Request를 생성한다.
  • PR 제목 또는 설명에 Closes #이슈번호 또는 Fixes #이슈번호를 명시하여 PR이 병합되면 이슈가 자동으로 닫히도록 한다.
    • 예시:
      • PR 제목: Feat: 회원가입 페이지 UI 구현 (Closes #12)
      • PR 설명: 이 PR은 회원가입 페이지 UI를 구현합니다. Closes #12
  • 코드 리뷰 및 테스트 완료 후 develop 브랜치에 병합한다.

5. 이슈 처리 흐름

  1. 이슈 생성
  2. 브랜치 생성 및 작업
  3. PR 생성 및 이슈 연결
  4. 코드 리뷰 및 병합
  5. 이슈 자동 종료

6. 예시 이슈 시나리오

  1. 이슈 생성 (예: 회원가입 페이지 개발, 이슈 번호 #12) 및 브랜치 생성

    git fetch origin
    git checkout feature/signIn
    
  2. 작업 후 커밋

    git add .
    git commit -m "Feat: 회원가입 페이지 UI 구성"
    
  3. 원격 저장소에 브랜치 push

    git push origin feature/signupPage
    
  4. PR 생성 (ex. Feat: 회원가입 페이지 UI 구성 (Closes #12))

  5. 코드 리뷰 및 develop 브랜치에 merge

  6. PR merge 시 이슈 #12 자동 종료


7. 주의사항

  • 모든 작업은 반드시 이슈를 통해 관리한다.
  • 브랜치 이름에 이슈 번호를 포함하여 추적 가능성을 높인다.
  • PR 생성 시 반드시 관련 이슈를 연결한다.
  • 여러 작업을 한 이슈/브랜치에 몰아서 처리하지 않는다.
  • 작업 단위별로 이슈와 브랜치를 분리할 것.

🏷️ Git 태그(Tag) 사용 가이드

✅

Git 태그는 특정 커밋에 버전 이름을 붙여 기록할 수 있는 기능

배포 시점을 명확하게 표시하고 추적하기 위해 사용


✅ 태그 용도

  • 배포 버전을 명확하게 기록하기 위해
  • 코드 변경 히스토리를 버전별로 추적하기 위해
  • 이전 버전으로 쉽게 롤백하기 위해

📌 태그 네이밍 규칙

  • 보통 SemVer;시맨틱 버전을 따름
  • 예시:
    • v1.0.0: 첫 정식 릴리스
    • v1.1.0: 기능 추가
    • v1.1.1: 버그 수정

v<주버전>.<부버전>.<패치버전>


🛠️ 태그 생성 방법

1. Annotated Tag 만들기 (권장)

git tag -a v1.0.0 -m "배포 버전 1.0.0"

예시 브랜치 시나리오

git checkout main
git pull origin main

# develop 병합
git merge develop

# 태그 생성
git tag -a v1.0.0 -m "배포 버전 1.0.0"

# 브랜치+태그 푸시
git push origin main --tags

# 태그만 푸시할 경우
git push origin --tags