내 깃 커밋 규칙 한글용(My Git Commit Convention Hangeul)
어떻게 하기로 했는지 조금씩 헷갈리는 게 있어 규칙을 문서화해 기억을 보조하기로 함
목차
형태
1| 유형(적용 범위?): 설명
2|
3| 본문?
4|
5| 꼬릿말?
텍스트 편집기에서는 위의 형태로 입력한다. 실제 예시;
feat: Add user model
A 때문에 B해서 C하고 user model을 추가
Resolves: #12
See also: #23, #24
주제(Subject)
1번 줄에 유형(적용 범위?): 설명
의 형태로 간략하게 내용을 쓴다.
적용 범위는 선택 사항이고 끝에는 쌍점(:, colon)을 붙인다. 쌍점 뒤에는 공백을 한 칸을 두고 설명을 간략하게 명령형으로 쓴다.
처음에는 영어 처럼 앞에 동작을 나타내고 쉼표로 구분한 뒤 설명을 써봤는데 일관성을 지키기 어렵고 큰 의미가 없었다.
- 커밋을 볼 때 관심사(캘린더, 통계, 서비스 같은 거)를 먼저 검색하고 feat, fix 같은 유형을 보고 그 다음 주제를 읽었다.
- 동사로 커밋 메시지를 살필 거라 생각했는데 동사보다 관심사를 먼저 살피는 게 편했다.
- 동작을 앞에 나타내는 규칙을 지키다보면 한글이 파괴되는 죄책감이 든다.
그래서 보통의 한글로 설명을 적기로 한다.
유형(Type)
작업 유형을 기록.
Type | 설명 |
---|---|
feat | 새 기능 |
fix | 버그 수정 |
docs | 문서에 관한 것 |
style | 코드의 형태에 관한 것 |
빠진 쌍반점(semi colon) 추가 등 | |
no production code change | |
refactor | feat나, fix가 아닌 코드 변경 |
test | 테스트에 관한 것 |
no production code change | |
pref | 성능을 향상시키는 변경 사항 |
rename | 파일 혹은 폴더의 이동이나 이름 변경 |
remove | 파일 혹은 폴더의 삭제 |
chore | chores : 잡일, 허드렛일 |
구성 관리(.gitignore 또는 .git 속성 등) |
|
build작업, 패키지 관리, json 데이터, css 변경, 기타 등등 | |
no production code change | |
ci | Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs). Angular Commit Type |
적용범위(Scope)
scope는 선택사항이다. 커밋의 영향을 받는 코드를 기록한다. 변경이 전역에 영향을 끼쳐서 기록이 어렵다면 생략한다.
예시
feat(order): 추가, 상품 주문 버튼
docs(readme): 문서화, 시작하는 방법
본문(Body)
필요할 경우 이곳에 변경사항을 자세하게 설명한다
꼬릿말(Footer)
필요할 경우 이곳에 git issue 번호 같은 부가적인 정보를 입력한다.
Git Command Line 사용하기
커밋 메시지 입력
git commit -m "Subject" -m "Description..."
첫번째 -m
은 주제를 입력하고 두 번째 -m
은 본문을 입력한다. -m
을 입력하지 않으면 텍스트 편집기가 실행되고, 첫 번째 -m
만 입력해도 된다.
커밋 옵션
-a
or--all
모든 변경사항을 자동으로 추적하고 커밋한다.
// 두 가지 단계를
git add .
git commit -m "Subject"
// 한 단계로 간소화
git commit -a -m "Subject"
--amend
현재 변경사항으로 마지막 커밋에 덮어씌워서 다시 커밋한다. 원격 보관소에 커밋 되지 않은 상태에 사용해야 된다.
git add .
git commit --amend -m "Subject"
기타
시도했던 한글로 설명 쓰는 방법
아래처럼 써보고 이상해서 버렸다.
feat: 추가, 로그인 페이지에 멋진 버튼
결정과정
영어 버전에서는 아래처럼 명령형으로 쓰라고 한다;
feat: Add click button to the login page
feat: Add personal information modification button
refactor: Remove the router with a structural change
refactor: Edit today's lunch menu
일정한 동사들이 문장 앞에서 반복되니 빠르게 읽기 편하다. 한글식으로 바꾸면 아래와 같다;
feat: 로그인 페이지에 클릭 버튼 추가한다
feat: 개인 정보 수정 버튼 추가한다
refactor: 구조 변경으로 라우터 제거한다
refactor: 오늘의 점심 메뉴 수정한다
이때 불편한 게 동사부터 빠르게 읽으려면 뒤부터 읽어야 하는데 그때 줄 정렬이 들쑥날쑥해서 동사를 찾으면 다시 줄 앞으로 눈이 이동해야 된다. 그리고 구지 -한다
를 쓸 필요가 없어서 고쳐봤다.
feat: 추가 로그인 페이지에 클릭 버튼
feat: 추가 개인 정보 수정 버튼
refactor: 제거 구조 변경 후 A 라우터
refactor: 수정 오늘의 점심 메뉴
의도한 바대로 됐고 행동 뒤에 구분자가 하나 있어야 할 거 같다.
유형 | 구분자 | 소감 |
---|---|---|
feat: 추가: 로그인 페이지에 클릭 버튼 | : | 연속으로 두 번 나와서 안될 거 같음 |
feat: 추가@ 로그인 페이지에 클릭 버튼 | @ | 안어울림 |
feat: 추가# 로그인 페이지에 클릭 버튼 | # | 안어울림 |
feat: 추가$ 로그인 페이지에 클릭 버튼 | $ | 안어울림 |
feat: 추가% 로그인 페이지에 클릭 버튼 | % | 안어울림 |
feat: 추가^ 로그인 페이지에 클릭 버튼 | ^ | 안어울림 |
feat: 추가& 로그인 페이지에 클릭 버튼 | & | 의미가 다름 |
feat: 추가* 로그인 페이지에 클릭 버튼 | * | 강조 표시 같음 |
feat: 추가) 로그인 페이지에 클릭 버튼 | ) | 안어울림 |
feat: 추가- 로그인 페이지에 클릭 버튼 | - | 안어울림 |
feat: 추가> 로그인 페이지에 클릭 버튼 | > | 안어울림 |
feat: 추가/ 로그인 페이지에 클릭 버튼 | / | 뭔가 /는 함부로 쓰면 안될 것 같음 |
feat: 추가; 로그인 페이지에 클릭 버튼 | ; | 볼만함 |
feat: 추가, 로그인 페이지에 클릭 버튼 메뉴 | , | 볼만함 |
반쌍점(;, semi-colon)과 쉼표 중에 쉼표가 보기 좋다. 그래서 쉼표를 구분자로 하고 일단 써보기로 한다.