일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- arbitrum sepolia eth
- EC2 Apache2
- UNPROTECTED PRIVATE KEY FILE
- Linux oh my zsh
- ssl 인증서 발급받기
- git branch
- GIT
- Linux apt-get
- AWS EC2 서버 만들기
- EC2 HTTP 호스팅
- Logback
- nginx https 설정
- linux foreground
- 아비트럼 새폴리아 이더 받는법
- git 계정 설정
- 서버의 서비스 방식
- EC2 oh my zsh
- EC2 zsh
- ec2 ssh unprotected private key file
- javascript 정렬
- Linux 디렉터리 구조
- git 기본 에디터
- Linux apt
- linux background
- HTTP Web Server
- javascript scope
- git switch
- Linux 디렉터리 역할
- Navigation Pattern
- Git 브랜치
Archives
- Today
- Total
HyunJun 기술 블로그
Git Commit Convention, 깃 커밋 컨벤션 본문
728x90
1. 커밋 컨벤션이란?
형상관리 툴인 Git을 사용하면서 Commit을 할 때 Commit Message를 작성하는 규칙이다.
- 자신 혼자 개발한다면 Commit Message를 아무렇게나 작성해도 자신은 이해할 수도 있겠지만
- 시간이 오래 지나거나, 10명, 100명처럼 팀원이 늘어난다면?...
- Commit Message는 Git Repository의 수~~~많은 코드 중 어떠한 기능을 만들었고 무엇을 수정했는지 알 수 있는 유일한 식별자 역할을 하기 때문에 그만큼 커밋 컨벤션 규칙도 중요하다고 할 수 있다.
- 예를 들어 저번에 JWT 구현했던 코드를 재사용하고 싶다면 과거의 코드를 커밋 메시지로 찾아야 하므로 커밋 메시지의 중요성은 매우 크다고 할 수 있다.
2. 커밋 메시지 구조
커밋 메시지 컨벤션은 정의하기 나름이겠지만, 보통 Udacity Style을 많이 사용한다.
type: subject, body, footer로 나뉘고 각 파트는 한 줄의 공백을 두어 구분한다.
type: subject
body
footer
type | subject | body(선택 사항) | footer(선택 사항) |
feat: 새로운 기능 추가 | 제목은 최대 50글자를 넘기지 않는다. | 본문은 한 줄당 72자 내로 작성한다. | 이슈 트래커 ID를 작성한다. |
fix: 버그 수정 | 양에 구애받지 않고 최대한 상세히 작성한다. | "유형: #이슈 번호" 형식으로 작성한다. | |
docs: 문서 수정 | 마침표 및 특수기호는 사용하지 않는다. | 어떻게 변경했는지 보다 무엇을 변경했는지 또는 왜 변경했는지를 설명한다. |
여러 개의 이슈 번호를 적을 때는 쉼표(,)로 구분한다. |
style: 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우 | Fixes: 이슈 수정 중 (아직 해결되지 않은 경우) | ||
refactor: 코드 리팩토링 | Resolves: 이슈를 해결한 경우 | ||
test: 테스트 코드, 리팩토링 테스트 코드 추가 | 영문으로 표기하는 경우 동사 원형을 가장 앞에 두고 첫 글자는 대문자로 표기한다.(과거 시제 사용 금지) |
Ref: 참고할 이슈가 있을 경우 | |
chore: 빌드 업무 수정, 패키지 매니저 수정, production code와 무관한 부분들 (.gitignore, build.gradle 같은) | Related to: 해당 커밋에 관련된 이슈 번호(아직 해결되지 않은 경우) | ||
comment: 주석 추가 및 변경 | |||
remove: 파일, 폴더 삭제 | ex) Fixes: #45 Related to: #34, #23 | ||
rename: 파일, 폴더명 수정 |
subject를 영어로 작성할 경우 아래와 같은 동사원형을 가장 앞에 작성한다.
# Add : 추가
# Remove : 삭제
# Simplify : 단순화
# Update : 보완
# Implement : 구현
# Prevent : 방지
# Move : 이동
# Rename : 이름 변경
3. 예시
feat: "로그인 기능 구현"
로그인 시 JWT 발급
Resolves: #111
Ref: #122
related to: #30, #50
fix: Update Login Logic
chore: Update git.ignore
database 관련 중요 정보 변경 감추기 위해
.gitignore에 application-database.properties 추가
4. Git Message Template
마지막으로, Commit 할 때 기본적으로 보여질 멘트 Template를 설정할 수 있다.
git이 적용되어 있는 진행 중인 프로젝트 루트 디렉토리에 .gitmessage.txt 파일 생성 후 아래의 예를 보고 커스텀 한다.
# my commit message template
# 본문과 푸터는 선택 사항입니다.
##################
# type: Subject (아래에 작성)
# Body(아래에 작성)
# Footer(아래에 작성)
##################
# feat: 새로운 기능 추가
# fix: 버그 수정
# docs: 문서 수정
# style: 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
# refactor: 코드 리팩토링
# test: 테스트 코드, 리팩토링 테스트 코드 추가
# chore: 빌드 업무 수정, 패키지 매니저 수정, production code와 무관한 부분들 (.gitignore, build.gradle 같은)
# comment: 주석 추가 및 변경
# remove: 파일, 폴더 삭제
# rename: 파일, 폴더명 수정
##################
# 영어로 Subject 작성 시
# Add : 추가
# Remove : 삭제
# Simplify : 단순화
# Update : 보완
# Implement : 구현
# Prevent : 방지
# Move : 이동
# Rename : 이름 변경
##################
# 예시
# feat: "로그인 기능 구현"
# 로그인 시 JWT 발급
# Resolves: #111
# Ref: #122
# related to: #30, #50
진행 중인 프로젝트의 터미널에서 아래와 같이 적용한다.
git config --global commit.template <.gitmessage.txt 경로>
이제 commit을 하게 되면
아래와 같이 방금 지정한 템플릿이 나오게 된다.
이때 i를 누르면 insert 모드로 들어가게 되고 커밋 메시지를 작성해 주면 된다.
주석 처리(#)된 부분들은 커밋 메시지에 포함되지 않으니 아래 예시처럼 작성해 주면 된다.
(줄이 겹친다던지 버그가 생겼을 때는 esc를 누르면 된다.)
-- INSERT -- 모드에서 빠져나오려면 esc를 누르면 되고
:wq를 입력하여 저장 및 종료하면 커밋 메시지가 입력된다.
그다음 Push를 하고 Github에서 확인해 보았습니다.
728x90
Comments