협업 시 Git Convention 강제화하기

Taemin Jang·2023년 11월 6일
0

팀 프로젝트를 준비하면서 항상 하는 과정 중 하나가 Git Convention을 설정하는 것이다.

TypeDescription
Feat새로운 기능 추가
Fix버그 수정
Modify파일/폴더 수정/삭제/위치변경
Style코드 포맷 변경, 세미 콜론 누락, 의미 없는 코드 수정
DesignCSS등 사용자 UI/UX 디자인 변경
Refactor코드 리팩토링
Docs문서 수정
Comment필요한 주석 추가 및 변경
Test테스트 코드 추가
Chore빌드 부분 혹은 패키지 매니저 수정사항

위처럼 컨벤션을 정했지만, 항상 지키면서 하기 어려웠다. 그래서 찾아본 것이 컨벤션을 강제화 시켜주는 법이다.

Git Commitizen이 뭐야?

Git Commit Convention을 강제할 수 있도록 지원해주는 라이브러리이다.

Commitizen

1. 설치

npm install --save-dev commitizen cz-customizable

2. package.json 파일 config 추가

// package.json
{
	"scripts": {
    ...,
    "commit": "cz"  // npm run commit으로 실행하도록 custom
  },
  ....
  "devDependencies": {
    ...,
  },
  "config": {
    "commitizen": {
      "path": "cz-customizable"
    }
  }
}

3. root 경로에 .cz-config.js 파일 생성

// .cz-config.js
module.exports = {
  types: [
    { value: "✨ Feat", name: "✨ Feat:\t새로운 기능 추가" },
    { value: "🐛 Fix", name: "🐛 Fix:\t버그 수정" },
    { value: "🔧 Modify", name: "🔧 Modify:\t파일/폴더 수정/삭제/위치변경" },
		{
      value: "🎨 Style",
      name: "🎨 Style:\t코드 포맷 변경, 세미 콜론 누락, 의미 없는 코드 수정",
    },
    {
      value: "💄 Design",
      name: "💄 Design:\tCSS등 사용자 UI/UX 디자인 변경",
    },
    {
      value: "🤖 Refactor",
      name: "🤖 Refactor:\t코드 리팩토링",
    },
    { value: "📝 Docs", name: "📝 Docs:\t문서 수정" },
		{ value: "💡 Comment", name: "💡 Commnet:\t필요한 주석 추가 및 변경" },
    {
      value: "✅ Test",
      name: "✅ Test:\t테스트 코드 추가",
    },
    {
      value: "🚚 Chore",
      name: "🚚 Chore:\t빌드 부분 혹은 패키지 매니저 수정사항",
    },
  ],
	// 메시지 내용 오버라이드
  messages: {
    type: "커밋 변경유형을 선택해주세요.\n",
    scope: "\nDenote the SCOPE of this change (optional):",
    // used if allowCustomScopes is true
    customScope: "Denote the SCOPE of this change:\n", // 스킵
    subject: "커밋제목을 50자이내로 명확하게 작성해주세요.\n",
    body: '본문을 작성 해주세요. 여러줄 작성시 "|" 를 사용하여 줄바꿈하세요. (첫줄|둘째줄):\n',
    breaking:
      "코드에 매우 큰 변화나 핫 픽스가 있는 경우 자세히 입력해주세요 (optional):\n",
    footer:
      "List any ISSUES CLOSED by this change (optional). E.g.: #31, #34:\n", // 스킵
    confirmCommit: "모든 커밋메시지를 제대로 입력하셨나요? (y | n)",
  },
  allowCustomScopes: false,
  allowBreakingChanges: ["Feat", "Fix", "Modify"],
  skipQuestions: ["scope", "customScope", "footer"],
  subjectLimit: 60,
};

4. 실행해보기

  1. git add - commit할 파일 등록

  2. npm run commit or npx cz - commitizen 실행

  3. commit 유형 선택 (방향키 위 아래로 이동 가능, enter로 선택)

  4. commit 제목 작성 (작성 시 명확하게)

  5. 해당 커밋에 대한 상세한 내용을 본문에 작성 (다음 줄로 넘길 때는 | 사용)

  6. 작성된 커밋 메세지 확인 후 y | n 입력

profile
하루하루 공부한 내용 기록하기

0개의 댓글