[Git] 깃모지(gitmoji) 가이드

[Git] 깃모지(gitmoji) 가이드

소프트웨어 개발을 할 때, 커밋 메시지는 팀 협업과 히스토리 추적에 있어 매우 중요한 역할을 담당한다. 그런데 원래 커밋 메시지는 텍스트 기반이라, ‘이 커밋이 어떤 종류의 변경을 담고 있는가?’를 한눈에 파악하기가 쉽지 않은 경우가 많다.
이런 문제를 해결하기 위해, 커밋 메시지에 **이모지(Emoji)**를 활용하여 쉽게 알아볼 수 있다. 그중 대표적인 예시가 깃모지(Gitmoji)다.

Gitmoji: 일관된 이모지 사용 규칙을 제공해, 커밋 메시지만 보고도 변경 사항의 의도를 쉽게 파악할 수 있도록 도와주는 프로젝트


1. 깃모지 사용 장점

  1. 가독성:커밋 로그에서 이모지만 보고도 ‘버그 수정’인지 ‘문서 작성’인지 쉽게 알 수 있습니다.
  2. 일관성:팀원들이 동일한 규칙(깃모지 표준)을 사용하면, 프로젝트 전반의 커밋 메시지가 일관성을 유지하게 됩니다.
  3. 협업 효율:커밋 로그만 훑어보더라도 작업 종류가 빠르게 파악 가능해, PR 리뷰나 히스토리 추적이 쉬워집니다.

2. 깃모지 사용 방법

2.1 깃모지 CLI 설치 (선택 사항)

Gitmoji는 CLI(명령줄 도구)로 편리하게 사용할 수 있다. 꼭 CLI를 쓰지 않더라도, 이모지 코드를 직접 복사해 커밋 메시지에 붙여넣어도 무방하다.

# npm
npm install -g gitmoji-cli

# yarn
yarn global add gitmoji-cli

2.2 IDE에서 사용(권장)

나같은 경우는 IDE에서 바로 커밋을 한다. 그래서 IDE의 플러그인을 사용해서 깃모지를 사용한다.

  1. VSCode: Gitmoji
  2. IntelliJ: Gitmoji Plus

2.3 수동으로 사용(권장)

  1. (1) 원하는 이모지를 복사한다 (예: :bug: → 실제 이모지는 🐛).
  2. (2) git commit -m "🐛 fix: 버그를 수정했다" 와 같은 형식으로 작성한다.

Convention 예시:

:bug: → 실제 이모지는 🐛

커밋 메시지 헤더: 🐛 fix: ...


3. 전체 깃모지 표 & 사용 예시

아래 표는 공식 Gitmoji 레포지토리 혹은 gitmoji.dev에 올라온 표준 깃모지 목록이다.

각 깃모지가 의미하는 바, 그리고 어떤 상황에서 사용하는지 간단히 정리해두었다.

참고:

  • 표에 나오는 “깃모지 코드”는 커밋 메시지에서 :sparkles: 같은 텍스트 형태로도 사용 가능하지만, 실제로는 처럼 이모지로 변환된다.
이모지 깃모지 코드 의미 / 용도 사용 예시
🎨 :art: 코드 구조형식 개선, 리팩토링 (기능 변화 X) 코드 정렬, 포매팅, 파일 구조 개선
⚡️ :zap: 성능(퍼포먼스) 개선 알고리즘 최적화, API 응답 속도 개선
🔥 :fire: 코드/파일 삭제 (주로 불필요한 코드 정리) 오래된 코드 제거, 사용되지 않는 컴포넌트 삭제
🐛 :bug: 버그 수정 로직 오류, 타입 에러, NullPointerException 해결
🚑 :ambulance: 치명적인(Critical) 핫픽스 프로덕션 장애 핫픽스, 긴급한 수정
:sparkles: 새로운 기능 추가 신규 기능 구현, 기능별 모듈 신설
📝 :memo: 문서(Documentation) 수정/추가 README.md 작성, Wiki 갱신, 주석 추가
🚀 :rocket: 배포(Deploy) 관련 작업 프로덕션 서버 배포, 배포 스크립트 수정
💄 :lipstick: UI/스타일 관련 수정 CSS 수정, UI 컴포넌트 디자인 변경
🎉 :tada: 첫 커밋(Initial commit) 프로젝트 첫 커밋
:white_check_mark: 테스트 추가/수정 단위 테스트, 통합 테스트 추가
🔒 :lock: 보안(Security) 관련 작업 보안 패치 적용, 인증 로직 강화
🔐 :closed_lock_with_key: 보안키(Key) 관련 작업(예: 자격 증명, 인증서) API 키 교체, 인증서 갱신
🔖 :bookmark: 버전 태그(Release/Version Tag) v1.0.0 릴리스 태그
🚨 :rotating_light: 린팅(Lint) 혹은 경고 해결 ESLint 오류 해결, 컴파일 경고 제거
🚧 :construction: 작업 진행 중(WIP) 아직 완성되지 않은 기능에 대한 중간 커밋
💚 :green_heart: CI 빌드/테스트 성공를 위한 수정 GitHub Actions, Travis 등에서 빌드 깨짐 수정
⬇️ :arrow_down: 의존성(Dependencies) 버전 다운그레이드 라이브러리 버전 다운, 호환성 문제
⬆️ :arrow_up: 의존성(Dependencies) 버전 업그레이드 라이브러리 버전 업, 보안 취약점 패치
📌 :pushpin: 의존성 고정(Pinning dependencies) 특정 버전에 의존성 잠그기, 예: package-lock.json 업데이트
👷 :construction_worker: CI 구성 혹은 빌드 스크립트 수정 GitHub Actions, Jenkins, CircleCI 등의 파이프라인 수정
📈 :chart_with_upwards_trend: 분석, 추적, 통계 기능 추가/수정 분석 툴 도입(예: GA), 메트릭 수집
♻️ :recycle: 코드 리팩토링(Refactoring) 함수 분리, 클래스 구조 재정비, 복잡도 감소
:heavy_plus_sign: 의존성 추가 새 라이브러리 추가
:heavy_minus_sign: 의존성 제거 사용하지 않는 라이브러리 제거
🔧 :wrench: 설정 파일 수정 Webpack, Babel, ESLint, Prettier, TSconfig 수정
🌐 :globe_with_meridians: 국제화(i18n), 지역화(l10n) 다국어 지원, 번역 파일 수정
✏️ :pencil2: 오타 수정(Typo) 변수명, 주석, 문법 오류 등 사소한 텍스트 수정
💩 :poop: 똥 코드 (개발 과정에서 잠시 사용) 빠른 테스트용 코드, 곧 제거될 임시 코드
:rewind: 되돌리기(Revert) 이전 커밋으로 롤백
🔀 :twisted_rightwards_arrows: 브랜치 머지 브랜치를 다른 브랜치에 머지
📦 :package: 컴파일된 파일이나 패키지 관련 변경 빌드 산출물, 패키징 작업
👽 :alien: 외부 코드API와의 호환성을 위한 변경 타사 라이브러리, 외부 API 변경에 대응
🚚 :truck: 파일 혹은 리소스 이동 디렉터리 구조 변경, 파일 이름 변경
📄 :page_facing_up: 라이선스 혹은 법률 문서 추가/변경 LICENSE 파일 업데이트, 법적 문서 정리
🍱 :bento: 에셋(assets) 추가/수정 (이미지, 아이콘 등) 이미지 교체, 리소스 폴더 구조 변경
♿️ :wheelchair: 접근성(Accessibility) 개선 ARIA 속성 추가, 키보드 내비게이션 개선
🐧 :penguin: Linux 관련 수정 리눅스 환경 전용 스크립트, 셸 스크립트 변경
🏂 :snowboarder: 윈도우/맥/리눅스 OS 특정 이슈 처리할 때(주로 win/linux/mac 상징) OS별 경로 구분 로직, 이식성 해결
🍎 :apple: macOS 관련 수정 macOS 전용 스크립트, plist 파일
🍏 :green_apple: iOS 관련 수정 iOS 전용 설정, Xcode 프로젝트 파일 수정
🤖 :robot: 안드로이드(Android) 관련 수정 안드로이드 전용 설정, Gradle 수정
🍔 :hamburger: UI/UX에서 메뉴, 내비게이션 등과 관련된 작업(상징적) 메뉴 구조 변경, SideBar 구현
🍕 :pizza: 작은 사소한 수정(파편적 수정) 한두 줄 수정, 사소한 UI 조정
✂️ :scissors: 코드/텍스트 일부 잘라내기 중복 코드 제거, 필요 없는 함수 삭제
🐳 :whale: Docker 관련 Dockerfile 수정, Docker Compose 설정
🦄 :unicorn: 기이한 해결책(매우 독특한 코드/핫픽스) 임시로 동작하도록 만든 마법 같은 코드
🌟 :star2: 완벽히 새로운(또 다른) 기능 깜짝 기능, 서브 시스템 추가
100 :100: 테스트 커버리지 100% 달성 테스트가 모두 커버됨
🌁 :foggy: UI/UX에서 흐릿하거나 임시 이미지, Mock 상태 임시 Mock 이미지 추가, 스케치 리소스
🏗️ :building_construction: 큰 구조 개편(주로 아키텍처) 프로젝트 구조 변경, 대규모 리팩토링
📱 :iphone: 모바일 UI 수정 모바일 반응형 수정, iPhone 관련 레이아웃 변경
🤡 :clown_face: 테스트 목업(Mock) 코드 Mock 데이터 생성, 가짜 함수로직
🥚 :egg: 이스터에그(Easter egg) 추가 숨겨진 기능이나 장난 요소
🙈 :see_no_evil: .gitignore 등 무시 파일 관련 변경 .gitignore 갱신, 추적 중단
📸 :camera_flash: 스냅샷(Snapshot) 업데이트 (테스트나 자료 이미지) Jest 스냅샷 테스트, 문서용 스크린샷 업데이트
⚗️ :alembic: 실험(Experiment) 실험적 기능 추가, Proof-of-Concept 코드
🔍 :mag: 검색(Search) 구현/개선 검색 알고리즘 수정, 검색 UI 개선
🏷️ :label: 타입/애노테이션(Labeling) 변경 타입 정의 수정, 주석 라벨링
🌱 :seedling: 새로운 시작(init project) 혹은 작은 초기 세팅 초기 세팅 파일 업로드, 작은 실험 프로젝트
🚩 :triangular_flag_on_post: 특정 기능의 플래그(Feature flag) Feature toggle 도입, 베타 기능 구분
🎯 :dart: 목표(Goal) 달성을 위한 작업, 주로 CI/CD 목표값 충족 커버리지 목표 달성, 릴리스 목표 달성
💫 :dizzy: 애니메이션/트랜지션 효과 추가 CSS 애니메이션, UI 트랜지션 로직
🗑️ :wastebasket: 파일이나 폴더를 삭제 오래된 리소스 제거
🛂 :passport_control: 권한/승인(Authorization) 관련 역할(role) 관리, 접근 제어 로직 수정
🩹 :adhesive_bandage: 간단한 버그 수정 (주로 작은 이슈) 사소한 버그 픽스, 간단한 로직 에러 수정
🧐 :monocle_face: 데이터 탐색/디버깅 디버깅 코드 추가, 로깅 개선
⚰️ :coffin: 죽은 코드(Dead code) 제거 더 이상 사용되지 않는 코드 폐기
🧪 :test_tube: 테스트 추가(새로운 테스트 케이스) 단위 테스트, 인수 테스트, 추가 시나리오 테스트
🧑‍💼 :necktie: 비즈니스 로직 혹은 관리(Management) 관련 계약 로직, 결제 처리, 관리자 페이지
🩺 :stethoscope: 진단 코드 혹은 상태 모니터링 Health check 코드, 모니터링 로직
🧱 :bricks: 인프라 구축 (DB 스키마, 서버 구성 등) DB 마이그레이션, 서버 설정 파일
🧑‍💻 :technologist: 개발자 경험(Dev Experience) 개선 로컬 개발 환경 개선, 개발자 문서
💸 :money_with_wings: 금전 관련 (결제, 청구, 비용 처리) 결제 로직 추가, 청구서 PDF 생성
🧌 :trollface: 인터넷 밈, 농담 코드 (장난성 커밋) 재미 요소, 만우절 이벤트

Happy Gitmoji! ✨

댓글