git&github

[Git&GitHub] 브랜치 및 커밋 메세지 컨벤션

작소율 2025. 3. 12. 15:35

👥 커밋 메시지 컨벤션

1.  커밋 메세지 구조

  • 헤더는 필수이며, 범위(scope), 본문(body), 바닥글(footer)은 선택 사항
<type>(<scope>): <subject>          -- 헤더
<body>                              -- 본문
<footer>                            -- 바닥글

 

ex)  커밋 메세지 예시

Feat: 카카오 로그인 기능 추가(#1)

소셜 로그인 기능 추가를 위해 카카오 로그인 기능을 추가함

2. 커밋 유형

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

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

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

4. 제목(Subject) 규칙

  • 제목은 영문 기준 50자 이내로 제한
  • 첫 글자는 대문자로 작성, 끝에는 .(마침표) 금지
  • 명령문으로 작성, 과거형 금지
  • 이슈 넘버가 있을 경우 기입

5. 본문(body) 규칙

  • 본문은 선택사항이며, 최대한 상세히 작성
  • 각 행은 72자 이내로 작성
  • 길어질 경우 개행을 통해 입력
  • 어떻게 보다는 무엇과 왜를 설명
  • 글머리 기호도 사용 가능. 하이픈(-), 별표(*)

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

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

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

 

💌 규칙에 맞는 좋은 커밋메시지를 작성해야 하는 이유

  • 팀원과의 소통
  • 편리하게 과거 추적 가능
  • 나중에 실무에서 익숙해지기 위해

 👆🏻 안지킨 사례

👆🏻 지킨 사례

🖤 한 커밋에는 한 가지 문제만!

  • 추적 가능하게 유지해주기
  • 너무 많은 문제를 한 커밋에 담으면 추적하기 어렵다.

🖤 CLI에서 커밋 메시지 여러 줄로 작성하는 방법

 ✅ 쌍따옴표를 닫지 말고 개행하며 작성 → 다 작성한 후에 쌍따옴표를 닫으면 작성 완료

git commit -m "Feat: 카카오 로그인 기능 추가(#1)

소셜 로그인 기능 추가를 위해 카카오 로그인 기능을 추가함"

 

✍️ git flow

이슈 생성 → 브랜치 생성 → 개발 → develop(브랜치)에 PR (→ 검토 후 머지 - 1명 리뷰 받고)

Branch 규칙

  • Github Flow
    • main
    • develop
    • feature

⚫ branch 설명

Main Branch

  • 브랜치 이름 : Main
  • 가장 최신의 배포된 버전
  • 최종 배포가 가능한 상태만을 관리하는 브랜치입니다.

develop Branch

  • 브랜치 이름 : develop
  • 개발용 브랜치입니다.

Feature Branch

  • 브랜치 이름 : Feature
  • 기능 개발, 오류 수정 등에 사용되는 브랜치입니다.
  • 기능/작업내용/#이슈번호
    • ex) feat/login/#1, refac/post/#2
  • 한글로 작성 시 깨질 수 있으므로 무조건 영문으로 작성!

⚫ branch 전략

  • develop 브랜치에서 개발 진행 (default 설정 → deploy 시 main에 merge)

 ex) 브랜치명 예시

기능/작업내용/#이슈번호 

ex) feat/login/#1, refac/post/#2