개발자 분들은 다 아시겠지만 Git은 소스 코드를 관리하기 위한 버전 관리 시스템입니다.
저도 프로젝트를 할 때 Git을 쓰긴 하지만 버전을 관리하는 용도가 아닌 단지 Github에 코드를 올려 보관하는 정도로 밖에 사용을 못하고 있었습니다 🥲
이렇게 된 원인에는 Git으로 할 수 있는 여러 기능과 그에 대한 명령어를 잘 알고 있지 못한 점도 있겠지만 또 다른 이유는 바로 commit에 대한 이해가 부족했다는 점입니다. 그래서 좋은 commit을 하기 위한 규칙을 정리하고 앞으로 올바른 습관을 들이려 합니다!
들어가면서
commit을 간단하게 설명하면 "코드의 변경 사항을 저장소에 기록"하는 것입니다. 코드의 변경 사항을 기록해두면 지금까지 어떤 흐름으로 개발을 했는지 파악하기 수월해집니다. 그리고 혹여 코드에 문제가 발생하더라도 특정 시점으로 돌아가 코드를 수정할 수 있습니다 😊
다만 이러한 commit의 강점을 효과적으로 활용하려면 제대로 기록을 해야겠죠. 그렇다면 제대로 기록을 하는 것은 어떤 의미일까요?
하나의 작업은 하나의 커밋으로
하나의 커밋에 너무 많은 변경 사항이 담기면 좋지 않습니다. 한 번에 여러 기능을 추가하거나 코드 수정을 한 후에 커밋을 하게 된다면 코드에 문제가 생겨 이전 시점으로 돌아가야 할 경우에 문제가 커질 수 있습니다. 작업 단위로 커밋이 되어 있다면 이런 문제를 최소화할 수 있겠죠?
그리고 작은 단위로 커밋이 되어 있다면 프로젝트의 히스토리를 볼 때 가독성을 높이고 이해하는 데에도 도움이 됩니다.
좋은 commit 메시지를 위한 약속
좋은 commit 메시지를 작성하려면 몇 가지 지킬 약속이 있다고 하는데요. commit 메시지를 영어로 작성할 때의 기준이어서 한글로 작성하게 될 때와 맞지 않는 부분도 있습니다. 이에 유의하며 봐주세요.
commit 메시지의 구조
commit 메시지의 구조를 제목, 본문, 꼬리말로 나눈다고 합니다. 이때 각 부분 사이에는 한 줄씩 띄어주면 됩니다.
commit 메시지 구조
타입: 제목
본문(선택 사항)
꼬리말(선택 사항)
commit 타입
commit 메시지의 타입에는 아래 유형 중에서 알맞은 것을 쓰면 됩니다.
타입 유형
종류 | 설명 |
---|---|
Build | 빌드 관련 파일 수정, 모듈 설치 또는 삭제 |
Chore | 기타 변경 사항 |
Ci | CI 설정 파일 수정 |
Comment | 필요한 주석 추가 및 변경 |
Design | CSS 등 사용자 UI 디자인 변경 |
Docs | 문서 수정 |
Feat | 새로운 기능 추가 |
Fix | 버그 수정 |
Init | 프로젝트 초기 생성 |
Perf | 성능 개선 |
Refactor | 코드 리팩터링 |
Remove | 파일 및 디렉토리 삭제 작업만 수행 |
Rename | 파일명 및 디렉토리명 수정 또는 파일 및 디렉토리를 옮기는 작업만 수행 |
Style | 코드 포맷 변경, 세미 콜론 누락 |
Test | 테스트 코드 추가, 수정, 삭제 |
제목 작성 규칙
- 50자 이내로 작성
제목이 너무 길어지지 않도록 합니다. 제목은 간결하고 요점만 나타내도록 작성합니다. - 첫 글자는 대문자로 작성
- 마침표와 특수 문자는 사용하지 않기
- 명령문으로 작성
- 과거형을 사용하지 않기
본문 작성 규칙
- 본문의 각 행은 72글자 이내로 작성
본문을 작성할 때 한 행이 너무 길어지지 않도록 주의합니다. - 최대한 상세하게 작성
- 어떻게보다 무엇과 왜를 설명
꼬리말 작성 규칙
- commit과 관련된 이슈 트래커 ID를 작성
유형: #이슈 번호
형식으로 작성- 이슈 번호가 여러 개면 ,로 구분
이슈 트래커 유형
종류 | 설명 |
---|---|
Fixes | 이슈 수정 중 (아직 해결되지 않은 경우) |
Resolves | 이슈를 해결했을 때 사용 |
Ref | 참고할 이슈가 있을 때 사용 |
Related to | 해당 커밋에 관련된 이슈 번호 (아직 해결되지 않은 경우) |
commit 메시지 템플릿
commit할 때 메시지의 구조와 어떤 내용을 써야 하는지 기억이 안 나서 찾아보려면 귀찮아질 수 있습니다. 그래서 템플릿을 만들어두고 commit할 때 불러올 수 있는데요. 템플릿을 설정하는 방법은 다음과 같습니다.
1. 서식 만들기
아래의 내용으로 채워진 .gitmessage.txt 파일을 만듭니다.#
으로 주석 처리된 부분은 commit에 반영되지 않습니다.
# 제목은 50자 이내
# 마침표와 특수 문자 사용하지 않기
# 요점만 간결하게
# ex) Feat: 글자수 세기 기능 구현
# 상세한 설명은 본문에 작성
# 각 행은 72자 이내
# 어떻게보다 무엇과 왜를 중점적으로
# ex) 서버에 적절한 분량만 전달해야 함
# 사용자가 입력할 수 있는 글자수를 1000자로 제한
# commit과 관련된 이슈 트래커 ID를 작성
# 이슈 번호가 여러 개면 ,로 구분
# ex) Resolves: #3
# Related to: #20, #21
# --- commit 타입 종류 ---
# Build: 빌드 관련 파일 수정, 모듈 설치 또는 삭제
# Chore: 기타 변경 사항
# Ci: CI 설정 파일 수정
# Comment: 필요한 주석 추가 및 변경
# Design: CSS 등 사용자 UI 디자인 변경
# Docs: 문서 수정
# Feat: 새로운 기능 추가
# Fix: 버그 수정
# Init: 프로젝트 초기 생성
# Perf: 성능 개선
# Refactor: 코드 리팩터링
# Remove: 파일 및 디렉토리 삭제 작업만 수행
# Rename: 파일명 및 디렉토리명 수정 또는 파일 및 디렉토리를 옮기는 작업만 수행
# Style: 코드 포맷 변경, 세미 콜론 누락
# Test: 테스트 코드 추가, 수정, 삭제
# --- 이슈 트래커 종류 ---
# Fixes: 이슈 수정 중 (아직 해결되지 않은 경우)
# Resolves: 이슈를 해결했을 때 사용
# Ref: 참고할 이슈가 있을 때 사용
# Related to: 해당 커밋에 관련된 이슈 번호 (아직 해결되지 않은 경우)
# -----------------------
2. git config에 템플릿 등록
아래의 명령어로 템플릿을 git config에 등록합니다. 이때 .gitmessage.txt
파일 경로를 지정하는 것이 필요할 수 있습니다.
git config --global commit.template .gitmessage.txt
3. 템플릿 사용하기
템플릿을 등록했으면 이제부터는 commit할 때 -m
옵션을 빼고 commit 명령어를 사용하면 됩니다.
git commit
마무리하며
Git commit 메시지를 작성하는 방법에 대해 살펴보았습니다. 저도 아직 commit을 하는 데에 있어서 부족한 점이 많습니다. 그렇지만 Git 레포지토리를 간결하게 관리하고 효율적인 협업을 위해 commit 메시지의 작성 규칙을 준수하고자 꾸준히 연습할 것입니다. 그리고 commit 외에도 Git의 다양한 기능을 하나씩 익혀서 소스 코드의 버전에 능숙해지도록 더 노력해야겠습니다 🥹
포스트를 읽어주셔서 고맙습니다! 좋은 하루 보내세요~