글을 시작하기에 앞서...
개인 프로젝트들을 진행하면서 Github의 저장소에 작업물을 올리다보면 매번 반복적으로 나오는 패턴이 있습니다.
(1) git add .
(2) git commit -m "커밋할 내용"
(3) git push origin master
혼자서 작업할때는 이정도로도 충분하기도 하지만, 이래저레 웹서핑을 하다보면 커밋을 하는 방법에 관한 글들을 많이 볼 수 있습니다.
수많은 사이트들이 대부분 동일한 내용의 글들을 작성하고 있는데 대략적인 내용은 다음과 같습니다.
- 커밋의 기본 형식은 타입(제목) / 본문 / 꼬리말 3개로 나뉜다.
- 제목과 본문, 꼬리말은 중간에 빈줄을 넣어 구분한다.
- 제목은 50자 이내로, 본문은 72자마다 줄바꿈을 한다 등
- 제목의 첫글자는 대문자로, 제목은 마침표(.)는 사용하지 않는다
- 타입은 feat, fix, docs, style, refactor, test, chore 로 작성한다
등.
이러한 내용은 해외에서 협업을 위해 일반적으로 사용되는 스타일 가이드를 참고하여 작성된 내용들인데 이 내용은 워낙 많은곳에서 다루고 있고 본문 하단에 관련 페이지 링크를 통해서도 확인할 수 있으니 생략하도록 하겠습니다.
이번 글을 작성하는 이유는 이제막 깃을 입문한 분들의 반응 중
어? 커밋이 여러줄 입력이 된다고???
그래서 저런식의 커밋은 어떻게 작성하는건데???
라고 궁금해 하기에 커밋 작성 작성 방법과 템플릿을 적용하는 방법에 대하여 적어보고자 합니다.
Git Commit 작성하는 방법
[git commit -m "작성할 내용"] 이 아닌 [git commit]만 입력하면 다음과 같은 창이 나타납니다.
친절하게도 한글로 모두 설명해 주기때문에 가장 위쪽에 적고싶은 내용을 원하는대로 작성해주면 됩니다.
자, 이제 커밋 컨벤션 양식에 맞춰 가장 위쪽에 제목을 적고 한줄 띄우고 본문 형식으로 적어봅시다.
글을 그냥 적을려고 하면 작성이 입력이 안될텐데 i 버튼을 누르면 아래쪽에 -- INSERT -- 라고 표시가 되면서 텍스트 입력이 가능한 상태가 됩니다.
방향키를 조작하여 원하는곳으로 이동 가능하며, 엔터를 눌러 줄바꿈도 가능합니다.
위와 같이 내용을 작성한 후, ESC 키를 누르면 INSERT 상태가 해제 됩니다.
이제 작성한 내용을 저장하면 되는데 shift + : 를 누른 후 wq를 입력하고 엔터를 눌러 주면 끝입니다.
위에 뭔가 엄청 내용은 많지만 앞에 #이 있는 부분은 주석처럼 무시되기 때문에 신경쓰지 않아도 됩니다.
(주석처럼 작성은 되지만 적용이 안되는것이 아니라 작성 자체가 안됩니다)
:wq
commit 과정 끝.
어...매번 줄바꿈 해줘야하고 커밋 타입 찾아서 적어줘야 하고...
남들은 분명 좋다는데 뭔가 많이 불편한데?? 싶은 느낌이 든다면 다음 단계를 따라해 봅시다.
Commit Template 만들고 적용하기
터미널을 열어 아래의 같은 순서대로 진행합니다.
1. 템플렛 파일 만들기
$ touch ~/.gitmessage.txt
2. 템플렛 파일 작성하기
다음 명령으로 템플렛 파일 에디트 화면으로 들어갈 수 있습니다.
$ vim ~/.gitmessage.txt
입력 모드로 변환한 후, 아래와 같이 자신에게 맞는 템플릿 형식으로 지정해 줍니다.
# 표시가 있는 항목은 모두 작성할때만 보이고 실제로는 사용되지 않는 부분이기에 원하는대로 적어주면 됩니다.
제목과 본문에 2줄씩 띄워쓴건 각 파트별 공백 한줄을 넣기 위함이니 위쪽 줄만 사용하면 됩니다.
### 제목 - (영문기준) 50자 이내
# [커밋 타입]: [작업 내용]
### 본문 - (영문 기준) 1줄 72자 이내
# (1)무엇을 (2)왜 (3) 어떻게 수정했는지
### 꼬리말
# (선택)이슈 등 아래 작성
# [ 커밋 타입 목록 ]
# feat : 기능 (새로운 기능)
# fix : 버그 (버그 수정)
# design : CSS 등 사용자 UI 디자인 변경
# refactor : 리팩토링
# style : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없음)
# docs : 문서 (문서 추가, 수정, 삭제)
# test : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)
# chore : 기타 변경사항 (빌드 스크립트 수정 등)
# post : 블로그 포스트 추가 (신규 포스트 작성 및 수정)
# rename : 파일 혹은 폴더명을 수정하거나 옮기는 작업만 하는 경우
# remove : 파일을 삭제하는 작업만 수행한 경우
템플릿 또한 :wq로 저장하고 빠져나오면 완료.
3. 커밋에 템플릿 설정 적용하기
해당 템플릿을 글로벌로 설정하여 어떤프로젝트에서건 이 양식을 가져오게 지정합니다.
$ git config --global commit.template ~/.gitmessage.txt
여기까지 설정을 하였다면 이후 git commit 명령을 입력하면 위 템플릿을 기본적으로 가져오게 됩니다.
Commit Template 적용 확인 및 삭제하기
적용중인 템플릿을 확인하는 명령
$ git config --list
적용한 템플릿을 삭제하는 명령
$ git config --global --unset commit.template
위의 확인 명령어를 입력하였을 때 템플릿이 적용되어있다면, 아래와 같이 적용된 템플릿이 표시되며,
적용되어 있지 않을 경우엔 해당 항목이 표시되지 않습니다.
※ 이 글에서 사용된 commit 규칙들 관련 정보
Udacity Git Commit Message Style Guide >