Git Commit Message Convention

MINNINIE·2023년 4월 26일
0

Git

목록 보기
1/1

서론

오늘은 !제가! 사용하는 Commit Message Convention에 대해 작성해 보려 합니다.

Commit Message는 미래에 이 Message를 보고 해당 Commit 내에서 어떤 작업이 이루어졌는지 파악할 미래의 나 👤 또는 다른 사람들 👥(웅성)👥(웅성) 모두를 위해서 중요하다고 생각합니다.

본론

여러 Convention들을 참고한 저의 Commit Message Convention은 다음과 같습니다.
(참고로 저는 Commit Message를 영어로 작성하고 있습니다.)

<type>: <Subject>

<type>

규칙

- 소문자로 작성

<type>으로 사용될 단어

  • feat (feature): 새로운 기능 추가
  • fix (bug fix): 버그 수정
  • docs (documentation): 문서 수정(제품 코드 수정 X)
  • style (formatting, missing semi colons, etc.): 코드 형식, 정렬, 주석 등의 변경(동작에 영향을 주는 코드 변경 X)
  • refactor: 코드 리팩터링
  • test (when adding missing tests): 테스트 추가, 테스트 리팩터링(제품 코드 수정 X, 테스트 코드에 관련된 모든 변경에 해당)
  • chore (maintain): 빌드 업무 수정, Package Manager 설정 등 위에 해당하지 않는 모든 변경(제품 코드 수정 X)

<Subject>

규칙

- 첫 글자는 대문자로 작성
- 글자 수는 50자 이하로 제한
- 마침표 및 특수 기호 사용 X
- 동사(원형)를 맨 앞에 명령어로 작성
- 과거 시제 사용 X
- 간결하게 요점만 작성

<Subject> 맨 앞에 사용될 단어

  • Fix: 보통 올바르지 않은 동작을 고친 경우에 사용
  • Add: 코드나 테스트, 예제, 문서 등의 추가가 있을 때 사용
  • Remove: 코드의 삭제가 있을 때 사용
  • Use: 특별히 무언가를 사용해 구현하는 경우
  • Refactor: 전면 수정이 있을 때 사용
  • Simplify: 복잡한 코드를 단순화할 때 사용합니다. Refactor의 성격이 강하나 이보다는 약한 수정의 경우 이용
  • Update: 개정이나 버전 업데이트가 있을 때 사용(원래도 정상적으로 동작하고 있었지만, 수정, 추가, 보완한다는 개념. 코드보다는 주로 문서나 리소스, 라이브러리 등에 사용)
  • Improve: 향상이 있을 때 사용(호환성, 테스트 커버리지, 성능, 검증 기능, 접근성 등 다양한 것들이 목적)
  • Make: 주로 기존 동작의 변경을 명시
  • Implement: 코드가 추가된 정도보다 더 주목할 만한 구현체를 완성했을 때 사용
  • Revise: Update와 비슷하나 문서의 개정이 있을 때 주로 사용
  • Correct: 주로 문법의 오류나 타입의 변경, 이름 변경 등에 사용
  • Ensure: 무엇이 확실하게 보장받는다는 것을 명시(if 구문처럼 조건을 확실하게 주었을 때도 사용)
  • Prevent: 특정한 처리를 못 하게 막음
  • Avoid: ‘Prevent’는 못 하게 막지만, ‘Avoid’는 회피(if 구문으로 특정한 동작을 제외할 때도 사용)
  • Move: 코드의 이동이 있을 때 사용
  • Rename: 이름 변경이 있을 때 사용
  • Allow: Make와 비슷하지만, 허용을 표현할 때 사용
  • Verify: 검증 코드를 넣을 때 주로 사용
  • Set: 변숫값을 변경하는 등의 작은 수정에 주로 사용
  • Pass: 파라미터를 넘기는 처리에 주로 사용
    (https://blog.ull.im/engineering/2019/03/10/logs-on-git.html Reid님의 글을 참고하였으며, 위 블로그에 가시면 각 단어의 자세한 사용법을 알 수 있습니다!)

Commit Message Convention 적용 예시

  • feat: Add new function to SampleActivity
  • chore: Update library to 7.3.0

고민하는 것 🧐

  • <Subject> 맨 앞에 사용될 단어를 위 단어 목록에서만 사용할 수 있도록 제한하는 것이 좋을지, 위 단어 목록은 권장 사항으로 두고 필요시 다른 단어들도 사용할 수 있도록 하는 것이 좋을지 고민입니다.
    • Commit Message Convention을 사용하기 전에는 어떠한 코드 수정이 있을 때 맨 앞에 주로 Modify를 사용했었으나, Modify가 위 단어 목록에 없어서 Fix 또는 Correct로 대체하여 사용하고 있습니다. 그러다 간혹 Fix와 Correct 사이의 애매모호한 것들이 있는데 이 친구들이 늘 저를 Commit Message 고뇌의 늪에 빠지게 합니다.. 사실은 그냥 Modify로 하고 싶은데 말이죠... 🤨
  • 이에 대해 어떻게 생각하시는지(Convention은 Convention일 뿐, 추가하고 싶으면 추가해라, 이런 건 고민하지 않아도 된다, etc.) 의견 주신다면 정말 감사하겠습니다.. 😹

결론

Commit Message Convention에 맞게 Commit Message를 작성하는 것은 아주 중요하고 좋은 습관이라고 생각합니다. Commit Message를 아무렇게나 작성할 때보다 고민하는 시간은 더 걸리겠지만, 잠깐의 고민이 미래의 많은 고민을 예방해 줄 수 있을 것입니다. 🤓

참고한 곳

profile
성장하는 개발자 앵옹입니다.

0개의 댓글