docs: Git 브랜치 및 커밋 메시지 작성 가이드 추가

This commit is contained in:
2025-07-14 17:09:01 +09:00
parent 79fe2476a2
commit 041771c6d6
15 changed files with 1124 additions and 0 deletions

134
guide-commit-convention.md Normal file
View File

@ -0,0 +1,134 @@
# Git 커밋 메시지 컨벤션 가이드
## 1. 개요
본 문서는 효과적인 협업과 코드 품질 관리를 위해 **Conventional Commits**를 기반으로 한 Git 커밋 메시지 작성 규칙을 정의합니다. 일관된 커밋 히스토리는 프로젝트의 변경 사항을 쉽게 추적하고, 버전 관리를 자동화하며, 팀원 간의 소통을 원활하게 만듭니다.
특히 연구개발조직의 특성을 반영한 확장 타입을 포함하여 실용성을 높였습니다.
## 2. 커밋 메시지 구조
모든 커밋 메시지는 다음의 세 부분으로 구성됩니다.
```
<type>: <subject>
[optional body]
[optional footer]
```
| 요소 | 설명 | 필수 여부 |
| :--- | :--- | :--- |
| **type** | 커밋의 성격을 나타내는 타입 | **필수** |
| **subject** | 커밋에 대한 50자 이내의 간결한 요약 | **필수** |
| **body** | 변경 이유, 이전 동작과의 차이점 등 상세 설명 | 선택 |
| **footer** | 이슈 번호, Breaking Change 등 추가 정보 | 선택 |
---
## 3. 타입 (Type)
커밋의 성격을 나타내는 타입은 아래 목록 중에서 선택합니다.
### 주요 타입
| 타입 | 설명 |
| :--- | :--- |
| **feat** | 새로운 기능 추가 |
| **fix** | 버그 수정 |
| **docs** | 문서 수정 (README.md, API 문서 등) |
| **style**| 코드 포맷팅, 세미콜론 누락 등 기능 변경이 없는 스타일 수정 |
| **refactor** | 코드 리팩토링 (기능 변경 없이 내부 구조 개선) |
| **test** | 테스트 코드 추가, 수정, 삭제 |
| **chore** | 빌드 프로세스, 패키지 매니저 설정 등 기타 변경사항 |
### 연구개발 특화 타입
| 타입 | 설명 |
| :--- | :--- |
| **experiment** | 실험적인 기능 또는 아이디어 구현 |
| **research** | 연구 관련 자료, 논문, 코드 추가 |
| **data** | 데이터셋 추가/수정, 전처리 스크립트 변경 |
| **model** | 머신러닝/AI 모델 구조 변경, 가중치 파일 추가 |
| **config** | 설정 파일 추가 또는 변경 |
---
## 4. 작성 규칙
### 제목 (Subject)
- **명령형, 현재 시제**로 작성합니다. (예: `add`, `fix`, `change` not `added`, `fixed`, `changed`)
- **첫 글자는 소문자**로 시작합니다.
- 문장 끝에 **마침표(.)를 붙이지 않습니다.**
- **50자 이내**로 간결하게 작성합니다.
### 본문 (Body)
- **제목과 본문 사이에는 한 줄을 비워** 명확히 구분합니다.
- 본문이 필요한 경우, **"무엇을"** 그리고 **"왜"** 변경했는지 상세히 설명합니다.
- 각 줄은 **72자 이내**로 작성하여 가독성을 높입니다.
### 바닥글 (Footer)
- **본문과 바닥글 사이에는 한 줄을 비워** 구분합니다.
- **Breaking Change**가 있는 경우, `BREAKING CHANGE:`로 시작하는 문단에 변경점, 마이그레이션 방법 등을 설명합니다.
- **특정 이슈를 종료**할 때 `Closes #이슈번호` 형식으로 작성합니다.
---
## 5. 커밋 예시
### 예시 1: 간단한 기능 추가
```
feat: add user logout function
```
### 예시 2: 이슈 번호를 포함한 버그 수정
```
fix: resolve login failure with incorrect password
사용자가 잘못된 비밀번호를 입력했을 때 500 에러가 아닌
401 Unauthorized 에러를 반환하도록 수정합니다.
Closes #45
```
### 예시 3: Breaking Change를 포함한 리팩토링
```
refactor: simplify user data retrieval logic
기존의 복잡했던 사용자 정보 조회 로직을 단일 함수로 통합하여
유지보수성을 향상시키고 코드 중복을 제거합니다.
BREAKING CHANGE:
`/api/v1/user/info` 엔드포인트가 제거되었습니다.
이제부터 `/api/v2/users/{id}`를 사용해야 합니다.
```
### 예시 4: 연구개발 특화 타입 (모델)
```
model: increase transformer layers from 6 to 12
모델의 성능 향상을 위해 인코더와 디코더의 레이어 수를
6개에서 12개로 늘리고, 관련 하이퍼파라미터를 조정합니다.
```
---
## 6. 커밋 템플릿 적용하기
이 컨벤션을 쉽게 적용하기 위해 `.gitmessage` 파일을 Git 커밋 템플릿으로 등록할 수 있습니다.
아래 명령어를 터미널에 입력하여 Git 전역 설정에 템플릿을 등록하세요.
```bash
git config --global commit.template .gitmessage
```
이제 `git commit`을 실행하면, 커밋 메시지 에디터에 `.gitmessage`의 내용이 자동으로 나타나 일관된 커밋 메시지 작성을 돕습니다.