글 작성자: 택시 운전사
반응형

👋 들어가며

규모가 있는 프로젝트를 작업할때, 혼자든 여럿이 팀으로 하든 git을 이용한 프로젝트의 버전 관리는 필수적이다. 그래서 프로그래밍 언어, 알고리즘 풀이 능력 이외에도 "프로젝트를 어떻게 끝까지 끌고 나갈 것인가?" 즉, git을 얼마나 잘 사용할 것인가가 개발자의 덕목중의 하나가 되었다. 이번 글에서는 git의 여러 기능 중 커밋에 대해 알아보고자한다.

🤔 커밋이란?

커밋이란 개발자가 정한 특정 시점에 작업물의 변화를 메시지와 함께 기록하는 한 포인트를 만드는 기능이다.

⏰ 특정 시점

여기에서 개발자가 정한 특정 시점의 기준은 여러가지가 될 수 있다. 엄청 잘게 쪼개서 패키지를 설치한 때가 될 수도 있고, 타이포를 고친 경우, 아니면 아주 긴 기능이 추가된 경우로도 시점을 정할 수 있다. 필자는 최대한 잘게 쪼개서 commit하는 것을 선호한다. 한번에 여러 수정사항이 있는 커밋보다 잘게 쪼개서 세분화된 커밋이 각 역할이 분명해서 하나 하나 확인하기 쉽다. 또한 나중에 커밋에 수정사항이 있을 경우에 타게팅하여 변경하기도 쉽다.

✍️ 메시지

위에 언급했던 것처럼 커밋은 개발자가 메시지와 함께 기록된다. 커밋 메시지는 나중에 자신이 리팩토링 및 유지보수를 할 때, 다른 개발자가 리뷰를 할때, 해당 커밋의 특정 시점이 어떤 기준으로 정해진 것인지 알기 위해 가장 먼저 보는 정보이다. 따라서, 일관되고 가독성이 좋은 커밋 메시지를 작성하는 것이 매우 중요하다. 커밋 메시지를 작성하는 방법에 정답은 없지만, 일관성가독성이라는 부분만 지키면 보통은 간다. 좋은 git 커밋 메시지를 작성하기 위한 8가지 방법으로 소개된 다음과 같은 방법도 있다. 자세한 내용은 위에 링크한 블로그를 참고하자.

  1. 제목과 본문을 한 줄 띄워 분리하기
  2. 제목은 영문 기준 50자 이내로
  3. 제목 첫글자를 대문자로
  4. 제목 끝에 . 금지
  5. 제목은 명령조로
  6. Github - 제목(이나 본문)에 이슈 번호 붙이기
  7. 본문은 영문 기준 72자마다 줄 바꾸기
  8. 본문은 어떻게보다 무엇을, 왜에 맞춰 작성하기

위에 언급한 것처럼 커밋의 방법론은 굉장히 다양한데 몇가지 기준을 나름 정해놓은 커밋 메시지 컨벤션을 소개시켜주고자 한다.

Semantic Commit Messages

과거에 자주 사용했던 커밋 메시지 컨벤션이다. 앞에 타입을 적고, 뒤에 요약된 내용을 적는 매우 간단한 방식이다.

feat: add hat wobble
^--^  ^------------^
|     |
|     +-> 현재 변화 요약
|
+-------> Type: chore, docs, feat, fix, refactor, style, or test.

Semantic Commit Messages를 이용한 커밋

타입의 종류는 다음과 같다.

  • feat: (new feature for the user, not a new feature for build script)
  • fix: (bug fix for the user, not a fix to a build script)
  • docs: (changes to the documentation)
  • style: (formatting, missing semi colons, etc; no production code change)
  • refactor: (refactoring production code, eg. renaming a variable)
  • test: (adding missing tests, refactoring tests; no production code change)
  • chore: (updating grunt tasks etc; no production code change)

gitmoji

gitmoji

현재 애용하고 있는 커밋 메시지 컨벤션이다. 앞에 이모지를 붙이고 뒤에 똑같이 요약된 내용을 적는 방식이다. 그냥 보면 디자인이 귀엽고 이뻐보이는 정도만 있을 거라 생각하지만, 커밋 메시지에 이모지를 사용하는 것은 엄청난 정보압축을 가능하게 해준다. 로그인 기능을 구현한 뒤 리팩토링하게 된 커밋 메시지를 쓴다고 가정해보고 둘의 차이를 비교해보자.

feat: 로그인 기능 구현 완료 // Semantic Commit Messages
✨ 로그인 기능 구현 완료 // gitmoji

refactor: 복잡성을 줄이기 위해 로그인 기능 리팩토링 // Semantic Commit Messages
♻️ 복잡성을 줄이기 위해 로그인 기능 리팩토링 // gitmoji

뿐만아니라, 다양한 이모지로 말로 표현하려면 매우 긴 내용도 더욱 짧게 표현할 수 있다.

gitmoji를 이용한 커밋

반응형