개발 블로그

발행: 2022/09/03수정: 2022/09/15

내 깃 커밋 규칙 한글용

내 깃 커밋 규칙 한글용(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)을 붙인다. 쌍점 뒤에는 공백을 한 칸을 두고 설명을 간략하게 명령형으로 쓴다.

처음에는 영어 처럼 앞에 동작을 나타내고 쉼표로 구분한 뒤 설명을 써봤는데 일관성을 지키기 어렵고 큰 의미가 없었다.

git-commit-convention-01 git-commit-convention-02
  • 커밋을 볼 때 관심사(캘린더, 통계, 서비스 같은 거)를 먼저 검색하고 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)과 쉼표 중에 쉼표가 보기 좋다. 그래서 쉼표를 구분자로 하고 일단 써보기로 한다.

참조