우아한테크코스[프리코스]

[1주 차] Git Commit Message Conventions 정리

문상휘파람 2024. 10. 17. 01:04

1주 차 미션 시작입니다!

아쉽게도 이번 포스팅은 미션 관련된 내용은 아니고, 깃허브 메세지 컨벤션을 정리해보았습니다.

아직 미션이 안끝나서, 미션 내용이나 미션에 관련된 내용은 아직 올릴 수가 없습니다..

미션 내용이 무엇인지, 어떻게 구현하였는지, 기능 구현 목록은 어떻게 작성하였는지 등 다양한 내용은 미션이 끝난 후 회고록을 통해 보여드리겠습니다.


과제 진행 요구사항

이번 과제 진행 요구사항을 살펴보니, 이런게 있더라고요!!

해당 내용은 여기를 클릭하시면 보실 수 있습니다..!


다만, 아쉽게도 영어로 나와있어서 저는 필요한 부분을 해석해 따로 정리해보았습니다.

앞으로의 미션을 진행하는데 있어서 많은 도움이 될 것 같습니다.

1. 커밋 메시지의 기본 구조

커밋 메시지는 세 가지 요소로 구성됩니다:

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

예시는 아래와 같습니다.

feat(calculator): add minus feature

빼기 기능을 추가했습니다.

Closes #123

2. 제목 작성 규칙

  • 형식: <type>(<scope>): <subject>
  • 첫 글자를 대문자로 쓰지 않는다.
  • 마침표를 사용하지 않는다.
  • 명령형 현재 시제를 사용한다. (예: "add", "fix", "update" 등)
    • "added"나 "adds" 같은 과거형이나 3인칭 형태는 사용하지 않는다.

예시는 아래와 같습니다.

  • 잘못된 예: Added minus feature.
  • 올바른 예: add minus feature

type - 들어갈 수 있는 값

  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 수정
  • style: 코드 포맷팅, 세미콜론 누락 등 (기능에 영향을 미치지 않는 변경)
  • refactor: 코드 리팩토링 (기능 변화 없음)
  • test: 테스트 코드 추가 또는 수정
  • chore: 빌드 작업 또는 패키지 관리자 설정 등 기타 변경사항

scope - 변경 사항이 어느 부분에 관련된 것인지 나타냄

ex) member, auth

subject - 커밋의 내용을 간결하게 작성

ex) calculator minus 기능 추가


3. 본문 작성 규칙

  • 본문은 한 줄을 비워서 제목과 구분합니다.
  • 명령형 현재 시제를 사용합니다.
  • 변경된 이유, 변경 사항의 동기 및 구현 방법 등을 간결하게 설명합니다.
  • 줄 길이는 최대 100자로 제한합니다.

ex) 계산기 빼기 기능을 추가합니다.


4. 꼬리말(Footer) 작성 규칙

  • 꼬리말에는 특정 이슈와의 연관성 또는 호환성 변경 사항을 기재합니다.
  • 이슈 참조:
    • 관련된 이슈를 닫을 때는 Closes #이슈번호 형식으로 작성합니다.
    • 여러 개의 이슈를 닫을 경우, 쉼표로 구분하여 작성합니다.
    • 예: Closes #123, #245
  • 호환성 변경 사항:
    • 커밋으로 인해 기존 기능이 호환되지 않거나 중단되는 변경 사항이 있을 경우, BREAKING CHANGE를 명시하고 설명을 덧붙입니다.
    • BREAKING CHANGE: 기존의 로그인 API 응답 형식이 JSON에서 XML로 변경되었습니다.

참고사항

fixrefactor의 차이

  • fix (버그 수정)
    • 의미: 버그를 수정할 때 사용하는 커밋 메시지 유형입니다.
    • 목적: 기능을 정상적으로 동작하도록 고치는 관련 사항에 사용됩니다.
  • refactor (리팩토링)
    • 의미: 코드의 구조나 내부 구현을 개선하지만, 기능상의 변화는 없는 경우에 사용하는 커밋 메시지 유형입니다.
    • 목적: 기능을 변경하지 않으면서도 코드 개선사항에 사용됩니다.

결론

  • fix는 버그나 오류를 수정하는 것입니다.
  • refactor는 코드의 구조나 품질을 개선하지만 기능에는 변화가 없는 경우입니다.
  • 기능에 직접적인 영향을 미치는지 여부에 따라 사용이 결정됩니다.

이렇게 컨벤션을 정리해보았습니다! 

질문 사항이나 잘못된 부분이 있다면 댓글로 알려주세요!