erlang/otp의 위키에서 Writing good commit messages라는 짧은 글을 보고 한국어로 옮겼다. 대부분의 오픈소스는 각각의 Contribute 문서를 통해 어떤 관례를 사용하는지 밝히고 있는 편이지만 대부분 아래의 방식과 크게 다르지 않았다.
좋은 커밋 메시지는 다음 세가지 중요한 목적이 있다:
- 리뷰 프로세스를 빠르게 만든다.
- 좋은 릴리즈 노트를 작성하게 돕는다.
- 미래의 코드 메인테이너를 돕는다. (그 메인테이너가 당신일 수도 있다!) 어떤 코드 변경이 일어났는지, 왜 이 특정한 기능이 추가되었는지 수년 후에 이야기 해도 알 수 있도록 말이다.
커밋 메시지의 구조는 다음과 같다. 이 내용은 git scm에서 자세하게 확인할 수 있다:
(50자 미만의) 변경에 대한 짧은 요약
필요하다면 상세한 설명을 첨가한다. 행 당 72자가 넘지 않도록 유의한다. 맥락에 따라 첫 줄은 이메일의 제목처럼,
나머지는 본문처럼 다뤄지는 경우가 있다. 요약과 본문을 구분하는 빈 행은 본문을 생략하지 않는 이상 필수적이다.
rebase와 같은 도구를 사용하면 혼란을 줄 수 있기 때문이다.
추가적인 문단은 빈 행 다음에 작성한다.
- 개조식 서술 또한 괜찮음
- 블릿(bullet)으로 하이픈(-)이나 별표(*)를 사용하고, 한 칸의 공간을 띄고 각 항목 사이 빈 행을 넣는
방식이 일반적이나 다양한 관례가 있음.
해야 할 일
- 요약과 설명을 작성할 때는 자신이 무엇을 했는지를 명령형으로 작성한다. 즉 다른 사람에게 이 일을 지시하듯 작성한다. “고쳤다 fixed”, “추가했다 added”, “변경했다 changed” 대신 “고치다 fix”, “추가하다 add”, “변경하다 change” 식으로 작성한다.
- 항상 두번째 빈 행을 추가한다.
- 커밋 메시지에서 줄 바꿈을 한다. (
gitk
등 커맨드 환경에서 커밋 메시지를 수평 스크롤 없이 쉽게 읽을 수 있는데 도움이 된다.)
하지 말아야 할 일
- 요약 끝에 마침표를 찍지 않는다. 요약은 제목이다. 제목은 마침표로 끝나지 않는다.
팁
- 커밋을 요약하는데 어려움을 느낀다면 커밋 안에 여러 로직의 변화 또는 버그 수정이 있기 때문일 것이다. 이럴땐
git add -p
명령어를 사용해 여러 커밋으로 분리하는 것이 낫다.
레퍼런스
커밋 메시지에 대한 좋은 논의를 다음 블로그 포스트에서 확인할 수 있다.
- On Commit Messages
(이 글도 번역했습니다. 커밋메시지에 대해)