Git Commit 메시지 작성법과 스타일 가이드

Git을 사용하다 보면 우리는 종종 commit 메시지를 작성하게 됩니다. 하지만 "어떻게 해야 더 명확하고 의미 있는 커밋 메시지를 작성할 수 있을까?"라는 질문을 자주 하게 됩니다. 이번 블로그 포스트에서는 Git commit 메시지 작성법과 commit 스타일에 대해 알아보겠습니다. 좋은 commit 메시지는 협업에서 효율성을 높이고, 코드 변경 사항을 추적하기 쉽게 만들어 줍니다. 이제부터 Git commit 메시지를 예술로 승화시켜 볼까요?

Git Commit 메시지 작성법과 스타일 가이드Git Commit 메시지 작성법과 스타일 가이드


1. 왜 commit 메시지가 중요한가?

Git commit 메시지는 프로젝트의 변경 이력을 이해하는 데 필수적입니다. 코드를 수정한 이유, 변경된 사항이 무엇인지 명확히 전달하는 것이 중요하죠. 특히 여러 개발자가 함께 작업할 때는 한 줄의 메시지가 프로젝트의 방향성을 결정할 수도 있습니다.

좋은 commit 메시지가 가지는 이점:

  • 변경 사항 추적 용이성: 나중에 코드가 문제가 생겼을 때, 문제의 원인을 빠르게 파악할 수 있습니다.
  • 협업 효율성 증대: 팀원들이 각자의 변경 사항을 쉽게 이해할 수 있습니다.
  • 프로젝트의 히스토리 관리: 버전 관리를 통해 왜, 어떻게 변화했는지 명확하게 알 수 있습니다.

2. Commit 메시지 작성 기본 규칙

commit 메시지는 단순해 보이지만, 사실 몇 가지 중요한 규칙들이 있습니다. 이를 잘 따르면 메시지가 훨씬 명료해지고, 협업 시 이해가 쉽게 됩니다.

기본 구조

  • 제목(Subject): 한 줄로 간결하게 요약 (50자 이내)
  • 본문(Body, 선택 사항): 변경 사항의 상세 설명 (필요 시 72자 내외로 작성)
  • 꼬리말(Footer, 선택 사항): 이슈 트래킹 넘버 또는 관련 정보

Commit 메시지 작성 규칙:

  1. 제목은 명령형으로 작성
    • 잘못된 예시: Fixed a bug with login
    • 올바른 예시: Fix login bug
    왜 명령형인가요?
    • Commit은 코드 변경 사항을 기록하는 것이고, 명령형은 그 자체로 작업을 명확히 정의합니다. 즉, “이 작업을 완료했다”는 느낌이 아니라, “이 작업을 수행한다”는 방식이죠.
  2. 첫 글자는 대문자로 시작
    • 모든 제목은 대문자로 시작하는 것이 기본입니다.
  3. 끝에 마침표를 찍지 않음
    • Commit 제목은 간결해야 하기 때문에 마침표는 생략합니다.
  4. 무슨 변경을 했는지 명확히 설명
    • 제목만으로도 어떤 작업을 했는지 이해할 수 있어야 합니다. 모호한 설명은 피하세요.
  5. 관련된 이슈 번호를 포함
    • 관련된 버그나 기능 요청이 있을 경우, 커밋 메시지의 꼬리말에 이를 명시합니다.
    • 예시: Fix issue with API response #42

3. Commit 메시지 스타일 가이드

3.1 Conventional Commits 스타일

Conventional Commits는 많은 개발팀에서 사용하는 인기 있는 스타일입니다. 이 스타일은 커밋 메시지를 일관성 있게 작성하는 규칙을 제시하며, 자동화 도구와 잘 연동됩니다. Conventional Commits 스타일에서는 아래와 같은 형식을 사용합니다.

<타입>(<스코프>): <제목>
<빈 줄>
<본문>
<빈 줄>
<footer>

3.2 주요 커밋 타입

  1. feat: 새로운 기능 추가
    • 예시: feat(auth): add user login functionality
  2. fix: 버그 수정
    • 예시: fix(api): correct response format
  3. docs: 문서 수정
    • 예시: docs: update README with installation steps
  4. style: 코드 포맷팅 변경 (로직 변경 없음)
    • 예시: style: reformat code with prettier
  5. refactor: 코드 리팩토링 (기능 변경 없음)
    • 예시: refactor: optimize for loop performance
  6. test: 테스트 코드 추가 또는 수정
    • 예시: test: add unit tests for login service
  7. chore: 빌드 업무 또는 패키지 매니저 설정 등의 변경
    • 예시: chore: update npm dependencies

4. 실전 예시로 Commit 메시지 작성 연습

4.1 간단한 예시

feat(cart): add discount calculation feature
  • 설명: 장바구니에 할인 계산 기능을 추가했습니다.

4.2 본문과 꼬리말을 포함한 예시

fix(order): correct wrong tax calculation

Previously, the tax was being calculated on the discounted price,
but it should be calculated on the original price before discount.

Fixes #101
  • 설명: 주문 시 세금 계산 오류를 수정하고, 관련 이슈 번호를 기록했습니다.

5. 좋은 Commit 메시지를 위한 팁

  • 작게 자주 커밋하라
    큰 덩어리의 작업을 한 번에 커밋하기보다는, 논리적인 단위로 나누어 작은 커밋을 자주 하는 것이 좋습니다.
  • 한눈에 알아볼 수 있는 커밋 메시지 작성
    코드를 다시 살펴볼 때 커밋 메시지만 보고도 어떤 작업을 했는지 바로 알 수 있도록 명확한 메시지를 작성하세요.
  • 자동화 도구 활용
    린트(lint) 도구나 Git Hook을 사용해 커밋 메시지 스타일을 강제할 수 있습니다. commitlint 같은 도구를 사용하면 팀 내 일관성을 유지할 수 있습니다.

마무리

좋은 Git commit 메시지는 프로젝트의 히스토리를 관리하고, 협업 효율성을 극대화하는 데 중요한 역할을 합니다. 명령형으로 간결하고 명확하게 작성하는 것이 핵심이며, Conventional Commits와 같은 스타일 가이드를 활용하면 일관성을 유지할 수 있습니다.

다음 프로젝트에서는 조금 더 신경 써서 깔끔한 commit 메시지를 작성해 보세요!
이 작은 변화가 팀과 프로젝트에 큰 차이를 만들 수 있을 것입니다.