왕논의 연구실

[Git] Git Commit명 규칙 본문

Git

[Git] Git Commit명 규칙

ywangnon 2021. 10. 12. 00:29

어떤 것을 하는데 있어서 가장 어려운 것 중 하나가 이름 짓는 것입니다.

게임할 땐 아이디 짓는게 어렵고, 코딩할 땐 변수명 짓는 게 고민이죠.

깃을 사용하는데 있어서도 깃 커밋명을 짓는게 참 힘듭니다.

 

규칙없이 짓다보니 커밋명 생각하기도 힘들고, 처음에 잘 사용해보자고 생각하던 깃을 어느순간 그냥 add, commit, push로 몽땅 때려 넣게 되었습니다. 그로인해 깃은 엉망이 되고, 자괴감만 들더군요.

그래서 커밋명 작성하는 규칙을 정하면, 그 규칙에 맞춰서 이름을 작성하게 되고, 그러면 좀 더 깔끔하고 보기 좋으면서 사용이 쉬운 깃이 될 것 같아 공부해보았습니다.

 

우선적으로 커밋메세지의 구조를 정해보려합니다. 아래 형식은 유다시티라는 회사의 커밋메세지 스타일이라고 합니다.

1. Commit 메세지 작성 요령

 

타입(Type): 제목(Subject) 

본문(Body)

꼬리말(Footer)

 

1.1. 타입

  • Feat : 새로운 기능 추가
  • Fix : 버그 수정
  • Build : 빌드 관련 파일 수정
  • Ci : CI관련 설정 수정
  • Docs : 문서 (문서 추가, 수정, 삭제)
  • Style : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없는 경우)
  • Refactor : 코드 리팩토링
  • Test : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없는 경우)
  • Chore : 기타 변경사항 (빌드 스크립트 수정 등)

 

코드를 작성하다보면 같은 기능을 다른 날 더 좋은 방식으로 고칠때가 있는데 이런 코드 수정은 Fix일까? Style일까?

Style은 개인의 수정이고, Refactor은 모두가 같이한 수정인가? 코드 형식이라는 말에서 헷갈린다.

각자 정해야 하겠지만, 개인적으로 첫번째 물음에서 코드 수정은 Fix가 좀 더 직관적인 것 같고, 두번째는 직관적이지는 않지만, 일단은 태도의 차이로 정해두려한다. 지나친 코드의 중복이나 우선적인 기능 구현으로 부채가 쌓여 리팩토링의 필요성이 느껴져서 하는 건 리팩토링, 나머지는 스타일로 작성하려고 한다. 이렇게 헷갈리는 것은 리팩토링에 대해 확실히 알지 못해서 그런게 아닐까 싶다.

 

1.2. 제목

  • 제목은 50자를 넘기지 않고, 마침표를 붙이지 않음
  • 제목에는 commit 타입을 함께 작성
  • 과거 시제를 사용하지 않고 명령조로 작성
  • 한글로 작성시 구문이 더 선호
  • 제목과 본문은 한 줄 띄워 분리
  • 제목의 첫 글자는 반드시 대문자로
  • 제목이나 본문에 이슈 번호가 있다면 붙임

 

1.3. 본문

  • 선택 사항. 없어도 무방
  • 한 줄에 72자를 넘기면 안 됨
  • 어떻게(How)보다 무엇을, 왜(What, Why)에 맞춰 작성
  • 설명, 그리고 commit의 이유를 작성

 

1.4. 꼬리말(Footer)

  • 선택 사항. 없어도 무방
  • Issue tracker ID를 작성할 때 사용
  • 해결: 이슈 해결 시 사용
  • 관련: 해당 commit에 관련된 이슈 번호
  • 참고: 참고할 이슈가 있는 경우 사용

 

영어가 최선이지만, 익숙해지기까지 한글로 하는 것도 어떤가 싶기도 하다. 팀원들 끼리 정하면 된다.

 

2. 이슈 자동 종료시는 법

 

키워드 #이슈번호

 

2.1. 키워드

  • 일반 개발 이슈
    • close
    • closes
    • closed
  • 버그 수정, 핫픽스 수정 이슈
    • fix
    • fixes
    • fixed
  • 문의, 요정사항 이슈
    • resolve
    • resolves
    • resolved

기능은 같고 위와 같이 나눠서 사용하면 좋다고 한다.

 

예시

 

기능추가: 얼굴인식 로그인 추가(#123)

사용자 요구사항으로 얼굴인식 로그인 추가
 - FaceLogin.swift
 
해결: #123
참고: #456, #789

 

수정: 인증 메소드 수정

* CABVerification.java: 15번째 줄 인증 메소드의 인자를 현 정책에 맞게 고쳤다.
* JSONFormat.java: 이 커밋은 이 파일에 적절한 로깅 메소드를 추가한다.
* MainView.java: 약간의 리팩토링.

 

close #123 - Feat: 함수추가

함수를 추가하였습니다.

 

추가

 

한글로 규칙을 정하고 예시를 만든 사이트

Git 사용 규칙 - Git commit 메시지 (tistory.com)

 

참조

 

[Git] 규칙적인 Commit 메세지로 개발팀 협업하기👾 (tistory.com)

Github commit 메세지 규칙 - Junhyunny’s Devlogs

좋은 git 커밋 메시지를 작성하기 위한 7가지 약속 : NHN Cloud Meetup (toast.com)