docs: Git 브랜치 및 커밋 메시지 작성 가이드 추가
This commit is contained in:
134
guide-commit-convention.md
Normal file
134
guide-commit-convention.md
Normal 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`의 내용이 자동으로 나타나 일관된 커밋 메시지 작성을 돕습니다.
|
||||
Reference in New Issue
Block a user