Git: 좋은 git commit message 작성법 (feat. 우테코 프리코스)

이번주 월요일, 밤을 새우며 자소서를 작성해서 우아한테크코스 6기 모집에 신청했다. (모집하는 것을 늦게 알아서 오전 10시까지 자소서 작성하느라 힘들었다..)
우아한테크코스는 6기 선발을 하기 전에 프리코스를 진행하는데, 4주동안 주어진 미션을 수행하는 것이다.

우테코에 선발되면 너무너무 좋겠지만.. 선발되지 않더라도 프리코스 참여로 배우는 점이 굉장히 많을 것 같아서 망설임 없이 신청했다.

글을 작성하는 현재 날짜로 오후 3시에 메일로 1주차 미션 내용이 도착했다. 기본 설정과 미션내용이 주어졌는데, 미션을 본격적으로 시작하기 전에 커밋 메세지를 제대로 작성해야 할 것 같다는 생각이 들었다. 기존에는 나만 확인하기 때문에 대충 작성했…다..ㅎ.. 프로젝트의 경우에는 간단하게 적었고.. 팀원이 이해하지 못하면 말로 설명해주면 되니까! 라는 마음으로 ^^.. 열심히 작성하지 않았었다.
하지만 프리코스의 경우에는 내가 설명을 해줄 수도 없는 상황이니까…! 이 기회를 삼아 정석대로 커밋 메세지를 작성해보고자 글을 작성한다.

커밋 메세지를 잘 작성해야 하는 이유


일단 우리는 왜 커밋 메세지를 잘 작성해야 할까?
그 이유는 프로젝트는 대부분 팀단위로 이뤄지기 때문이다. 만약 개인 프로젝트라면 솔직히 내가 알아볼 정도로만 작성하면 된다고 생각한다. (남이 볼거 아니니까?)

하지만 대부분의 프로젝트는 개인이 아닌 팀단위로 이뤄지고, 팀원마다 맡은 역할이 다르다. 결국 각자 개발한 코드를 합쳐야 하는데, 이때 분명 다른 팀원의 코드를 확인하게 되는 일이 진짜 무조건 최소 1번은 발생한다. (UNIVE.US나 DrawMap을 진행했을 때도 셀 수 없이 다른 팀원 코드를 확인했다.) 다른 사람의 코드로 인해 내 코드가 충돌 날 수 도 있고, 다른 팀원이 개발한 기능을 가져다 사용하는 일이 많기 때문이다.

그렇기에 다른 팀원이 개발 혹은 수정한 내용을 쉽게 확인하기 위해서 히스토리 (커밋한 내용)를 확인하게 된다. 이때, 어떤 기능을 개발했는지 수정했는지 커밋 메세지만을 보고 명확히 알 수 있다면? 보고자 하는 내용을 정말 간단하게 찾을 수 있을 것이다.

그렇다 위의 내용은 내 경험담이다 ^^. 다른 글을 참고하지 않고 순수 나의 경험담을 작성한 것이다.. 그렇기에 이번에 두 프로젝트를 동시에 진행하면서 느낀 것은… 커밋 메세지… 잘.. 명확히.. 작성하자… 그리고 커밋… 한번에 하지 말고… 기능마다 커밋하자… 정말 뼈저리기 느낀 사실이다.

좋은 커밋 메세지


그렇다면 좋은 커밋 메세지란 무엇일까?
해당 로그에서 어떤 것을 수행했는지 (기능 추가, 수정 등), 기능을 추가했다면 어떤 기능을 추가했는지와 같은 내용 등 해당 메세지를 통해서 어떤 것을 수행했는지 명확히 알 수 있어야 한다.
개발에 개도 모르는 사람이 봐도 음~ 이런 걸 수행했군!을 메세지만 보고 알 수 있어야 한다고 나는 생각한다!

좋은 커밋 메세지 작성 방법


프로젝트마다 커밋하는 방법을 따로 규칙으로 정했을 수도 있다. 지금부터 내가 설명하는 것은 ‘대체적으로’ 많이 사용하는 커밋 메세지 작성 방법이다.

커밋 메세지 구조


type(타입): title(제목)

# 예시
# feat: 음료 선택하기 기능 구현

위와 같이 작성하면 된다. 저 부분을 header라고 하는데, body나 footer도 존재하지만 대부분 사용 안하는 것 같다. 그래서 위에 header 부분만 작성하면 될 것 같다.

Type 키워드

  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 수정
  • style: 코드 스타일 변경 (코드 포매팅, 세미콜론 누락 등) 기능 수정이 없는 경우
  • design: 사용자 UI 디자인 변경 (CSS 등)
  • test: 테스트 코드, 리팩토링 테스트 코드 추가
  • refactor: 코드 리팩토링
  • build: 빌드 파일 수정
  • ci: CI 설정 파일 수정
  • perf: 성능 개선
  • chore: 이 외에 자잘한 수정
  • rename: 파일 혹은 폴더명을 수정만 한 경우
  • remove: 파일을 삭제만 한 경우

대부분이 해당 타입 키워드를 사용한다.

추가로, 우테코에서 어떻게 커밋 메세지를 작성하나 확인해봤는데 위와 같이 type: title 형식으로 하더라! 앞으로는 위에 처럼 좋은 커밋 메세지를 작성해보겠다..!

참고
Git 커밋 메시지 규칙
[Git] 좋은 commit message 작성법

Comments