본문으로 바로가기

Commit Message에 대한 정리

category ETC/Git 2022. 11. 19. 14:04
728x90
반응형

좋은 커밋 메시지?

프로젝트 버전을 관리할 때 좋은 커밋 메시지를 작성하는 것은 필수다. 즉 프로젝트가 어떤 식으로 변경되어 왔는지를 확인하는 이점과 이를 통해 협업을 진행하는데 크게 도움이 된다. 나아가 어떤 버전에 버그가 발생할 경우 이를 쉽게 유지보수할 수 있는 장점도 존재한다.


좋은 커밋 메시지는 다음의 사항들이 충족되는가를 생각할 수 있다.

  • 로그 가독성
  • 더 나은 협업
  • 쉬운 유지보수

 

위의 키워드를 통해 알 수 있는 건 추상적인 개념이 존재한다. 어떤 것이 가독성이 좋은것인가?, 어떤 걸 더 나은 협업이라고 부를 수 있는가?, 쉬운 유지보수라는 걸 정확이 어떤 걸 해야 쉽게 유지 보수하는가?라고 궁금증이 생기는데 다행히 이런 사항들을 달성하기 위한 좋은 커밋 메시지를 작성하는 방법들이 존재한다. 자료를 찾고 정리한 내용이며 프로젝트에 맞게 유연하게 적용하는 걸로 생각하자.

 

커밋을 해야 할 때

git을 커밋해야할 때를 잘 구분하자. 필자는 작업해야 될 크기가 클 때 커밋을 거의 코드가 돌아가는 정도를 커밋의 단위를 잡을 때도 있고 혹은 급하게 자리를 비워야 할 때 커밋을 사용하기도 했는데 커밋을 시도할 때는 다음 규칙을 생각하면서 커밋하려고 시도해보자

  • 어떤 기능에 대한 테스트가 끝났을 때
    • 기능이 돌아가는 걸 뜻하는 게 아니며 기능이 정상 작동하고 요구사항이 충족되었으며 작업 완료 시점에 버그가 없을 떄 커밋을 하자
  • 기능에 기반한 커밋
    • 작동하는 단순한 메소드를 추가하거나 단순한 설명을 추가하거나 변경의 단위가 너무 작은 정도의 커밋도 의미가 있다. 하지만 스페이스바 하나를 추가하여 커밋하는 등의 의미 없이 너무 잦은 커밋은 신경 쓰도록 하자. 이는 이슈를 추적하는데 방해가 된다.



커밋 메시지 작성 방법

커밋 메시지 구조

<type> : <Subject>

<body> # Optional

<footer> # Optional
  • <type> : 아래 리스트 중 하나를 작성하는 것이며 이 커밋이 어떤 종류의 커밋인지 알 수 있다.
    • feat: 새로운 기능이 추가된 경우
    • fix: 버그를 해결한 경우
    • docs: 문서의 내용이 변경될 경우
    • style: 코드 컨벤션, 린팅이 수정된 경우를 말하며 코드의 변경이 없는 경우
    • refactor: 리팩터링
    • test: 테스트 코드 추가 혹은 테스트 코드 리팩터링
    • chore: 패키지 매니저 구성, 빌드 작업 업데이트
  • <Subject> : 커밋이 수행한 작업에 대해 제목을 뽑아 작성하자.
    • 명령형으로 작성하며 50~69 글자로 작성하자.
    • 영어인 경우 대문자로 시작해야 하며 마침표로 끝나면 안 된다.
  • <body> : 커밋이 수행한 작업에 대한 내용을 작성하자
    • 어떻게 보다는 무엇을, 왜에 초점을 맞추어 작성하도록 하자.
    • 모든 상황에서 body를 적어야 할 정도는 아니기 때문에 Optional이며 커밋에 추가적인 설명이나 무단이 필요한 경우 사용하자.
    • body를 적을 때는 제목과 한 칸 뛰어 작성하고 72자를 넘지 않도록 하자
  • <footer>: 이슈를 트래킹 할 때 사용한다.
    • 커밋과 관련된 이슈를 작성하도록 하자.
    • close와 같은 키워드를 이용하면 해당 키워드와 연관된 이슈를 자동으로 닫는다. 이슈 종료 키워드는 다음과 같다.
      • close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved

 

커밋 메시지 템플릿 적용하기

git을 이용하여 commit message 템플릿을 등록하고 커밋을 시도할 때마다 해당 템플릿을 이용할 수 있다. github에 올라와 있는 프로젝트 소스나 다른 프로젝트 소스에. git-commit.message.text이나. gitcommit.txt와 같은 파일들을 볼 수 있다. 이것이 바로 해당 프로젝트에서 요구하는 커밋을 시도할 때 작성하는 템플릿 파일이다.

커밋 템플릿 파일은 다음 명령으로 적용이 가능하다.

$ git config commit.template <TEMPLATE_FILE>

# Example
$ git config commit.template gitmessage.txt

위는 global 설정이 아니기 때문에 특정 소스에서만 적용된다. global로 적용하려면 다음과 같이 해주자.

$ git config --global commit.template gitmessage.txt



 

728x90
반응형