티스토리 뷰

git

commit convention 만들기

jfmam 2023. 3. 11. 15:47

commit 문제

프로젝트의 컴밋을 관리하고 잘 기록하는 것은 중요하다. 누군가 기록을 들여다 보았을 때 어떤 기능을 하는 commit인지만 보아도 코드 전체를 보지않고 이해 할 수 있기 때문이다.

eslint나 prettier같은 경우도 코드스타일을 통일시키기 위한 노력으로 나왔다. 그리고 commit 또한 통일 시키고 더 자세하게 기록할 수 있게하면 잘 관리 할 수 있지 않을까? 라는 생각에서 commit lint 설정을 생각하게 되었다.

TODO?

commit message 작성법

commit lint

Commit message 작성법

구조

template

타입: 작업 설명(subject) // 타입과 간단한 설명을 작성한다.
여기에 **최대 50자까지 변경 사항에 대해 설명하세요**

본문(optional) // 길고 구체적으로 설명할 필요가 있을시 작성한다
필요하다면 여기에 좀 더 상세하게 설명하세요. 한 줄당 대략 **72자까지 맞출 수 있도록**
합니다. 일부 상황에서 첫 줄은 커밋의 제목이 되고, 그 후에 작성되는 텍스트는 본문으로
취급됩니다. 제목과 본문을 나누는 중간에 삽입되는 공백 행은 매우 중요합니다 (본문을
완전히 생략하지 않는 이상); `log` 와 `shortlog`, `rebase` 와 같이 다양한
도구들은 공백에 의존하므로 두 부분을 합쳐버릴 경우 도구가 혼동할 수 있습니다.

이 커밋이 해결하고자하는 문제를 설명합니다. 어떻게 했는지보단(코드가 설명할 것이기 때문),
**왜** 변경 사항을 적용했는지에 대해 집중합니다. 이 변경 사항으로 인해 생기는 부수 효과가
있거나 다른 직관적이지 않은 영향이 있을 수 있다면 여기에 설명하세요.

...
...
...

꼬리말(optional)
- 대규모 업데이트가 있을 때
- 특정이슈에 대한 해결작업일 때 (해결하지 못하거나 pending되면 꼬리말에 같이 작성)
앞으로 추가되는 문단은 공백 행 뒤에 옵니다.
 - 필요하다면 강조점을 써도 됩니다
 - 하이픈(-) 또는 별(*)이 주로 강조점으로 사용되고 이후 단일 공백(space)을 삽입합니다
   강조점 사이에는 공백 행을 넣지만 규칙은 언제든지 바꿀 수 있습니다
이슈 트래커를 사용한다면 다음과 같이 레퍼런스를 메시지 하단에 삽입하세요:
Reslove: LEONI-103
See also: LEONI-105, LEONI-107

작성법

  • 본문의 경우 구체적으로 작성할 것
    • 무엇을 추가(변경) 하였는지, 왜 추가(변경) 하였는지 구체적으로 서술 할 것
    • 내가 한 작업에 대해서 구체적으로 서술 할 것,
      UI추가 (x) // what why에 대해서 없고 구체적이지 못하다
      이미지리스트 컴포넌트에 타이틀 추가 (what)
      이미지리스트를 기획에 맞게 이미지 뿐만아니라 타이틀 같이 추가 (why)(O)

밑에 두개는 꼭 읽어볼것!

commit-messages-guide/README_ko-KR.md at master · RomuloOliveira/commit-messages-guide

git 커밋 메시지 작성 간단 가이드

타입 구성요소

subject 부분에 작성

  • feat: 새로운 기능
  • fix: 버그수정
  • docs: 도큐멘테이션 생성 및 변경
  • chore: 패키지 매니저 변경 및 추가, 코드에 변경없음
  • refactor: 리팩토링
  • test: 테스트 추가 및 수정
  • revert: 작업 되돌리기
  • perf: 성능개선
  • style: 공백, 세미콜론 등 코드 스타일 수정

commit lint 만들기

lint로 제한하기

  • 타입과 메세지를 필수적으로 작성하여 브랜치의 의도를 나타낸다.
  • body와 footer는 optional하게 작성한다.
  • lint staged 생성 시 commit-msg bash 파일을 만들어서 git hook 관리
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

// yarn berry 버전 프로젝트에서 npx 대신 yarn dlx를 사용한다.
yarn dlx commitlint --edit $1

commit lint library

  • husky
  • @commitlint/cli
  • @commitlint/config-conventional

commit 예시

$ git commit
// <subject>
[feat] save image at public dir and create summary UI

//<본문>
- summary UI에 필요한 이미지를 public에 저장
- summary UI 구현

// <footer>
Resolve: PROJECT-111

Reference

웹 버저닝과 배포내역관리 (feat. standard-version)

'git' 카테고리의 다른 글

gitlab flow  (0) 2023.03.11