728x90
1. Git Commit 컨벤션
- 커밋 메시지는 제목, 본문, 꼬리말 3가지 파트로 나뉘고 각 파트는 빈줄을 두어서 구분
# git commit
type(옵션): ["해시태그"issueNumber -] Subject # -> 제목 : 최대 50글자, 마침표 X, 영문 표기시 동사원형, 첫char 대문자
body(옵션) # -> 본문 : 어떻게 X, 무엇을 왜 O , 75자 남기지 말 것
footer(옵션) # -> 꼬리말 : issue tracker ID를 명시하고 싶은 경우 작성
# 예시
Feat: "추가 로그인 함수"
로그인 API 개발
Resolves: #123
Ref: #456
Related to: #48, #45
1.1. 제목
1.1.1. 타입
- 태그와 제목으로 구성, 태그는 영어로 쓰되 첫문자는 대문자로 작성, : 뒤에만 space 존재 ex) Feat: Subject
- 참고로 추가적 문맥 정보 제공을 위해 괄호내에 상세 내용 작성 ex) Feat(Navigation)
- 종류
태그 이름 | 설명 |
Feat | 새로운 기능 추가 |
Fix | 버그를 고친 경우 |
Design | CSS 등 사용자 UI 디자인 변경 |
!BREAKING CHANGE | 커다란 API 변경의 경우 (arguments || return 값 || db table 변경) |
!HOTFIX | 급하게 치명적인 버그를 고쳐야하는 경우 |
Style | 코드 포맷 변경, 세미 콜론 누락, 코드 수정 없는 경우 |
Refactor | 프로덕션 코드 리팩토링 |
Comment | 필요한 주석 추가 및 변경 |
Docs | 문서를 수정한 경우 (README.md) |
Test | 테스트 추가, 테스트 리팩토링(프로덕션 코드 변경 X) |
Chore | 빌드 테스트 업데이트, 패키지 매니저를 설정하는 경우(프로덕션 코드 변경 X) |
Rename | 파일 혹은 폴더명을 수정하거나 옮기는 작업만 한 경우 |
Remove | 파일을 삭제하는 작업만 수행한 경우 |
- 사용
- 기능 : Feat, Fix, Design, !BREAKING CHANGE, !HOTFIX
- 개선 : Style, Refactor, Comment
- 그외 : Docs, Test, Chore, Rename, Remove
1.1.2. 제목
- 제목의 처음은 동사원형
- 총 글자 수 50자 이내
- 특수문자 삽입 하지 않는다 (. ! ?)
- 개조식 구문 작성
- 영어 : Fix, Add, Change 명령어로 시작 ex) Feat : "Add get data api 함수" - 영어 첫글자는 대문자
- 한글 : 고침, 추가, 변경 명령어로 시작 ex) Feat : "추가 get data api 함수"
1.2. 본문
- 한 줄 당 72자 내로 작성
- 본문 내용은 양에 구애받지 않고 최대한 상세히 작성
- 무엇을 변경했는지, 왜 변경했는지 설명 > 어떻게 변경했는지
1.3. 꼬리말
- 꼬리말은 optional = 선택이다.
- 이슈 트래커 ID 작성
- "유형: #이슈 번호" 형식
- 여러개 이슈 번호 작성 시 쉼표로 구분
- 이슈 트래커 유형
- Fixes: 이슈 수정중(미해결)
- Resolves: 이슈를 해결했을 때 사용
- Ref: 참고할 이슈가 있을 때
- Related to: 해당 커밋에 관련된 이슈번호(미해결)
- ex) Fixes: #45 Realated to: #34, #23
2. Gitmoji
- type으로 사용되는 단어를 이모지로 대체한 것
- 차이점은 이모지 작성 다음 콜론 없이 바로 제목 작성
- CLI, GUI version 2가지 존재
- push 했을 경우 github에서 이모지로 나타난다.
2.1. CLI
2.1.1. 설치
- npm || brew를 사용해 설치 가능
# 설치
npm i -g gitmoji-cli
brew install gitmoji
# 도움말
gitmoji --help
2.1.2. commit 방법
2.1.2.1. 자동 완성 방법
git add .
gitmoji -c # git commit 과 동일
# 이모지 선택 : 커서로 이동 혹은 :이모지명 작성
# 자동으로 제목, 내용 작성 해라고 보여줌
2.1.2.2. 직접 작성 방법
git add.
git commit -m ":이모지명: Add README.md"
- gitmoji 사이트 : https://gitmoji.dev/
- 태그와 유사한 Gitmoji
아이콘 | 코드 | 유사 태그 | 설명 |
✨ | :sparkles: | Feat | 새로운 기능 추가 |
🐛 | :bug: | Fix | 버그를 고친 경우 |
🩹 | :adhesive_bandage: | Fix | 심각하지 않은 문제에 대한 간단한 수정 |
💄 | :lipstick: | Design | CSS 등 사용자 UI 디자인 변경 |
💥 | :boom: | !BREAKING CHANGE | 주요 변경사항 소개 |
🚑️ | :ambulance: | !HOTFIX | 긴급 수정 |
🎨 | :art: | Style | 코드의 구조/형태 개선 |
♻️ | :recycle: | Refactor | 프로덕션 코드 리팩토링 |
💡 | :bulb: | Comment | 필요한 주석 추가 및 변경 |
📝 | :memo: | Docs | 문서 추가/수정 |
✅ | :white_check_mark: | Test | 테스트 추가/수정 |
👷 | :arrow_up: | Chore | CI 빌드 스스템을 추가하거나 업데이트 |
💚 | :green_heart: | Chore | CI 빌드 수정 |
🚚 | :package: | Rename | 파일 혹은 폴더명을 수정하거나 옮기는 작업만 한 경우 |
🔥 | :fire: | Remove | 코드/파일 삭제 |
- 자주 사용할 법한 Gitmoji (업데이트 중)
더보기
아이콘 | 코드 | 설명 |
🎉 | :tada: | 프로젝트 시작 |
⚡️ | :za: | 성능 개선 |
🔒 | :lock: | 보안 이슈 수정 |
🔐 | :closed_lock_with_key: | 비밀 추가, 업데이트 |
🔖 | :bookmark: | 릴리즈/버전 태그 |
📌 | :pushpin: | 특정 버전 의존성 고정 |
👷 | :construction_worker: | CI 빌드 시스템 추가/수정 |
📈 | :chart_with_upwards_trend: | 분석, 추적 코드 추가/수정 |
➕ | :heavy_plus_sign: | 의존성 추가 |
➖ | :heavy_minus_sign: | 의존성 제거 |
🔧 | :wrench: | 구성 파일 추가/삭제 |
🔨 | :hammer: | 개발 스크립트 추가/수정 |
🌐 | :globe_with_meridians: | 국제화/현지화 |
💩 | :poop: | 똥싼 코드 |
⏪ | :rewind: | 변경 내용 되돌리기 |
🔀 | :twisted_rightwards_arrows: | 브랜치 합병 |
📦 | :package: | 컴파일된 파일 추가/수정 |
👽 | :alien: | 외부 API 변화로 인한 수정 |
📄 | :page_facing_up: | 라이센스 추가/수정 |
🍻 | :beers: | 술 취해서 쓴 코드 |
🗃 | :card_file_box: | 데이버베이스 관련 수정 |
🔊 | :loud_sound: | 로그 추가/수정 |
🔇 | :mute: | 로그 제거 |
🙈 | :see_no_evil: | .gitignore 추가/수정 |
🚀 | :rocket: | 배포 |
🚨 | :rotating_light: | 컴파일러/린터 경고 수정 |
🚧 | :construction: | 진행중인 작업 |
⬇️ | :arrow_down: | 의존성 다운 그레이드 |
⬆️ | :arrow_up: | 의존성 업그레이드 |
📌 | :pushpin: | 특정 버전 종속성 고정 |
📈 | :chart_with_upwards_trend: | 분석, 추적 코드 추가 업데이트 |
✏️ | :pencil2: | 오타 수정 |
💬 | :speech_balloon: | 텍스트, 리터럴 추가 업데이트 |
🍱 | :bento: | 자산 추가 업데이트 |
♿️ | :wheelchair: | 접근성 향성 |
👥 | :busts_in_silhouette: |
2.2. GUI
- 인텔리제이 기준 설명 - vscode도 존재
- 설치 : plugin에서 gitmoji 설치 (노란 상자에 얼굴 그려진 것)
- 사용 : 좌측 배너 coomit click하면 gitmoji 얼굴 나타남. 클릭해서 사용 (단축키 com + opt + g)
3. git template
3.1. Git Config
- --system
- Git은 먼저 /etc/gitconfig 파일을 찾는다.
- 이 파일은 해당 시스템에 있는 모든 사용자와 모든 저장소에 적용되는 설정 파일이다.
- git config 명령에 --system 옵션을 주면 이 파일을 사용한다.
- --global
- Git은 ~/.gitconfig 파일을 찾는다.
- 이 파일은 해당 사용자에게만 적용되는 설정 파일이다.
- --global 옵션을 주면 Git은 이 파일을 사용한다.
- --local
- 현재 작업 중인 저장소의 Git 디렉토리에 있는 .git/config 파일을 찾는다.
- 이 파일은 해당 저장소에만 적용된다.
- git config 명령에 --local 옵션을 적용한 것과 같다. (아무런 범위 옵션을 지정하지 않으면 Git은 기본적으로 --local 옵션을 적용한다)
- 각 설정 파일에 중복된 설정이 있으면 설명한 “순서대로” 덮어쓴다.
예를 들어 .git/config 와 /etc/gitconfig 에 같은 설정이 들어 있다면 .git/config 에 있는 설정을 사용한다.
3.2. 커밋 메시지 템플릿 설정
3.2.1. .gitmessage.txt
- 생성 위치: .git이 존재하는 아무 곳
- template 내용
# <타입>: <제목> 형식으로 작성하며 제목은 최대 50글자 정도로만 입력
# <:Gitmogi:> <제목>
# 제목을 아랫줄에 작성, 제목 끝에 마침표 금지, 무엇을 했는지 명확하게 작성
################
# 본문(추가 설명)을 아랫줄에 작성
################
# 꼬릿말(footer)을 아랫줄에 작성 (관련된 이슈 번호 등 추가)
################
# feature : 새로운 기능 추가
# fix : 버그 수정
# docs : 문서 수정
# test : 테스트 코드 추가
# refactor : 코드 리팩토링
# style : 코드 의미에 영향을 주지 않는 변경사항
# chore : 빌드 부분 혹은 패키지 매니저 수정사항
################
3.2. global 적용
- 해당 프로젝트에 적용
- vi editer로 동작
- i : 작성
- esc : 벗어나기
- :wq : 저장
# 설정
git config --global commit.template <.gitmessage.txt 경로>
# 제거
git config --global --unset commit.template <.gitmessage.txt 경로>