오늘은 Google Commit Messege Convention
에 대해 이야기를 해보려고 한다. 이전에 함께 프로젝트를 했던 팀원분이 공유해주셔서 알게되어 조금 더 자세하게 공부해보았다!
초보일수록 더욱 정확한 정보로 탄탄하게 자라야한다고 생각하기 때문에 ChatGPT
와 Google
, GitHub
의 힘을 빌려 정리한 내용을 공유해보려고 한다!
시작하기에 앞서 기본으로 알고 가야할 3가지가 있다!
이 부분에 대해 기본옵션으로 인지하고 아래 내용을 습득하는 것이 좋다!
Google Commit Messege Convention
은 일관되고 쉬운 커밋 기록을 유지하는데 중점을 두고 보통 AngularJS 커밋 스타일 가이드를 기반으로 한다!
(내가 봐도 설명 어려우니까 아래로 이동!)
🚨 커밋 스타일 가이드 예시
타입() : 간단한 내용(명령문 형태로 작성)
==== 한 줄 띄우고 ====
상세 내용
==== 한 줄 띄우고 ====
이슈 번호 또는 브레이킹 체인지에 대한 내용
우선, 첫번째 줄은 모두 필수로 입력해줘야하고 두번째줄과 세번째줄은 필요할 때만 입력하면 된다.
타입은 변경 사항의 성격을 나타낼 수 있도록 입력해야하는데 주로 입력하는 용어는 아래와 같다.
🚨 타입(tupe)에 입력하는 주 용어
feat
- 새로운 기능 추가
fix
- 버그 수정
ci
- CI 관련 수정에 대한 커밋 타입
docs
- 문서 수정 (예: README 변경)
style
- 코드 스타일 변경 (공백, 들여쓰기 수정 등)
refactor
- 코드 리팩토링 (기능 변경 없음)
test
- 테스트 추가 또는 수정
build
- 빌드 관련 파일 수정에 대한 커밋 타입
chore
- 빌드/배포 관련 작업, 패키지 관리 작업 등
타입 옆에 있는 괄호에는 변경된 기능이나 모듈의 범위를 나타내는 곳이다.
🚨 모듈의 범위(scope)를 나타내는 용어
auth
- 새로운 기능 추가
config
- 설정이나 시스템 관련 기능 추가
ui or art
- UX/UI 개선이나 디자인 추가
utils
- 도구나 유틸리티 추가
app
- 모바일 관련 기능 추가
api
- API 관련 작업
db
- 데이터베이스 또는 데이터 추가
맘대로 적기에는 컨벤션규칙이 있기 때문에 그럴 수 없고 아래를 참고하면 좋다.
🚨 간단한 내용(subject) 부분 작성방법
- 첫 글자는 소문자로 시작한다. (영문)
- 50자 이내로 작성한다
- 마침표를 사용하지 않는다.
사실 나는 마침표를 사용하지 않는 점에서 조금 의아했고 적응하기 힘들었다! 하지만 정해진 규칙을 맘대로 어길 수 없으니 자연스럽게 따를 수 있도록 적응해야겠다.
선택사항인 만큼 없을 줄 알았는데 간단한 규칙이 있었다.
🚨 상세 내용(body) 작성방법
- 무엇을, 왜 변경했는지에 대해 입력한다.
- 줄의 길이는 72자를 넘지 않도록 작성한다.
나도 처음엔 이슈 번호와 브레이킹 체인지 자체가 무엇인지 하나도 몰랐다. 그래서 알아보았다!
이슈번호나 브레이킹 체인지는 협업 환경에서 커밋의 의도와 변경 사항의 중요성을 명확하게 전달하기 위해 커밋 메시지에 추가하는 중요한 요소라고 한다.
버그, 기능 요청, 개선 사항 등을 관리하는 이슈 트래커(GitHub Issues, Jira)의 특정 항목을 가리키는 번호를 의미하고 이슈 번호를 포함하면 특정 이슈와 관련 있다는 것을 연결할 수 있다.
Fixes #<번호>
또는 Closes #<번호>
를 작성하면 이슈를 자동으로 닫아줌Fixes #123
또는 Closes #123
Refs #123
또는 Related to #123
기존 기능이나 인터페이스를 변경해 이전 버전과 호환되지 않게 만드는 변경 사항을 의미함
브레이킹 체인지로 인해 기존 코드나 사용자에게 수정 작업이 요구됨
BREAKING CHANGE:
키워드를 필수 사용🚨 이슈번호와 브레이킹 체인지 사용 예시
feat(config): add support for environment variables Implemented functionality to load configuration from .env files. BREAKING CHANGE: The application now requires a .env file to run. Refer to the documentation for setup instructions. Fixes #78
이슈번호는 팀에서 관리 중인 특정한 이슈를 해결하는 커밋에 항상 포함하기!
브레이킹 체인지는 중요한 변경 사항이 있을 때만 추가하기! (ex. API 경로 변경, 함수 이름 변경, 설정 파일 구조 변경 등)
깃에 사용하는 이모지를 깃모지라고 부르곤 하는데 깃모지를 쓰기 전에 확인해야하는 부분들이 있다.
feat(새로운 기능 추가) 커밋에 사용할 추천 이모티콘
🌟 - 새로운 기능의 추가를 강조할 때
✨ - 새로운 기능이나 개선된 기능 추가
🆕 - 새로운 것을 도입할 때
💡 - 기능 아이디어를 구현할 때
🚀 - 주요 기능 출시나 초기 단계 구현
🛠️ - 새로운 기능을 위한 준비 작업
일반적인 기능 추가를 나타내는 이모티콘
✨ - 새로운 기능이나 개선 사항 추가
✨ feat(module-name): add step 1 functionality
특정 상황에 따른 추천 이모티콘
1. 기능 관련
🆕 - 새로운 기능 추가🆕 feat(auth): add user authentication feature
⚙️ - 설정이나 시스템 관련 기능 추가
⚙️ feat(config): add support for environment variables
2. UI/UX 관련
🎨 - UI/UX 개선이나 디자인 추가🎨 feat(ui): implement new button styles
3. 특정 기술 스택
🔧 - 도구나 유틸리티 추가🔧 feat(utils): add a helper function for API calls
📱 - 모바일 관련 기능 추가
📱 feat(app): implement swipe gesture handling
4. API 관련
🌐 - API 관련 작업🌐 feat(api): add endpoint for user profiles
5. 데이터 관련
🗃 - 데이터베이스 또는 데이터 추가🗃 feat(db): add migration for user table
좋은 커밋 방법에 대해 예시를 가져오는 편이 좋을 것 같아서 몇가지 적어본다.
<feat(module-name): implement step 1 functionality
Added the initial logic for step 1. This includes basic validation and API setup.
Further enhancements will follow in subsequent commits.
Fixes #123
어디서 본 커밋 같다면 빙고! 내가 개인과제 : 키오스크
를 커밋할 때 사용한 문장들이다.
<refactor(module-name): improve step 1 code structure
Refactored the logic to improve readability and maintainability. No functionality changes.
위에서 이야기한 것처럼 간단한 내용 부분은 소문자로 시작하고
<test(module-name): add unit tests for step 1 functionality
Added unit tests to cover the main scenarios for the new feature implemented in step 1.
Git Commit
은 스스로 겁먹어서 어렵게 느낀 것일 수도 있다 !
멋지십니다. 응원할게요!