- [1주차] 커밋(Commit) 컨벤션2024년 10월 16일 19시 15분 31초에 업로드 된 글입니다.작성자: do_hyuk
Git의 커밋 단위는 앞 단계에서 README.md 에 정리한 기능 목록 단위로 추가한다.
Angular JS Git Commit Message Conventions을 참고해 커밋 메시지를 작성한다1. 커밋 메시지 컨벤션의 필요성
우테코에서 제공된 링크에서는 커밋 메시지 컨벤션의 규칙을 지켜야하는 이유를 세 가지로 이야기한다.
1. script를 이용한 CHANGLOG.md 파일 자동 생성
2. git bisect 를 이용한 중요하지 않은 커밋 무시
3. 더 나은 이력 정보 제공지금까지는 당연하게도 협업 또는 유지보수를 위해 커밋 메시지에 제대로 된 정보를 가독성 있게 담아야 한다고 생각했다.
그런데 CHANGLOG.md 파일을 스크립트로 자동 생성 할 수 있다는 내용은 호기심을 자극했습니다.
먼저, 어떻게 커밋 메시지를 작성해야할 지 부터 알아보겠다.
2. 커밋 컨벤션의 구조
우리가 보통 글을 쓸 때 제목, 본문, 추가내용으로 구성하는 것과 같이
커밋 컨벤션도 위의 구조를 따른다.
파일을 변경하거나 수정한 뒤 commit을 하게 될 때 아래와 같이 커밋 메시지를 추가할 수 있다.
git commit -m "커밋메세지"
"커밋 메시지" 부분을 컨벤션에 맞게 작성하면 된다.
3. 커밋 메시지 포맷
<type>(<scope>): <subject> - Subject line <BLANK LINE> - 줄 바꿈으로 구분 <body> - Message body <BLANK LINE> <footer> - Message footer 1. Subject line 1. 변경 사항에 대한 간단한 설명. 2. 70자를 넘기지 않도록 한다. 2. Message body 1. 수정 이유와 전후 비교 설명. 2. 명령형 현재 시제로 작성한다. (changed X, change O) 3. 70자를 넘기면 줄바꿈한다. 3. Message footer 1. 주요 변경사항은 푸터에 변화에 대한 상세설명, 정의, 이전 노트와 함께 명시되어야 한다. 2. 전후를 Before : scope: { ~~ } After : scope: { ~~~ } 와 같이 상세하게 명시한다. 3. 처리 완료된, 즉 close 된 이슈에 대해서는 `Closes #123, #124` 로 표기한다. 3. 70자를 넘기면 줄바꿈한다.
커밋 컨벤션을 지킬 시에는 github 및 다양한 git에서 메시지를 더 쉽게 읽을 수 있다는 이점이 있다.
Subject Line은 속성(type)과 범위(scope), 변경 사항에 대한 간결한 설명(subject)로 구성되어있다.
속성별 type
# feat - 새로운 기능 추가
# fix - 버그 수정
# docs - 문서 수정
# test - 테스트 코드 추가
# refactor - 코드 리팩토링(기능 수정 없이 가독성이나 유지보수성을 높이기 위한 작업)
# style - 코드 의미에 영향을 주지 않는 변경사항(들여쓰기 수정 or 줄 바꿈 수정할 때)
# chore - 빌드 부분 혹은 패키지 매니저 수정 사항
범위를 나타내는 scope
범위는 커밋 변경 위치를 지정하는 모든 것이 될 수 있다.
예를 들어 README.md, UserController, findById 등등
scope는 type,subject과 다르게 생략해도 무관하다.
제목을 간결하게 설명하는 subject
subject를 작성 할 때는 주의해야 할 사항들이 존재한다.
- 제목은 최대 70자가 넘지 않도록 한다
- 마침표 및 특수기호는 사용하지 않는다. 끝에 점(.) 없음
- 영어로 작성 시 첫 글자를 대문자로 쓰지 않는다.
- 영문으로 표기하는 경우 동사(원형)를 가장 앞에 둔다.
- 제목은 개조식 구문으로 작성한다.(간결하고 요점적인 서술)
body 본문부분
위 처럼 제목을 간결하게 작성했다면 본문에서는 최대한 자세히 설명을 작성하면 된다.
개인적으로는 커밋 메시지에 body를 넣어도 잘 보지 않게 되는거 같아 저는 쓰지 않습니다.
footer 꼬릿말 부분
footer는 추가 사항이고 주로 이슈 트래커 ID를 작성한다.
//예시 Fixes: #45 Related to: #34, #23 Closes #392 Breaks foo.bar api, foo.baz should be used instead
유형: # 이슈 번호 형식으로 사용한다.
여러 개의 이슈 번호를 적을 때는 쉼표(,)로 구분한다.
이슈 트래커 유형은 다음 중 하나를 사용한다.
- Fixes: 이슈 수정 중(아직 해결되지 않은 경우)
- Resolves: 이슈를 해결했을 때 사용
- Ref: 참고할 이슈가 있을 때 사용
- Related to: 해당 커밋에 관련된 이슈번호(아직 해결되지 않은 경우)
'우아한테크코스 > TIL' 카테고리의 다른 글
[Git] git push 하는데 HTTP 400 error?? (0) 2024.10.21 댓글