Development environment

[Git] Git 커밋 메세지 규칙 + 커밋 수정하기

hjjummy 2025. 12. 17. 13:57

 

 

Git 커밋 메시지 기본 구조

가장 많이 사용하는 커밋 메시지 형태는 다음과 같다.

 
type(scope): message
  • type: 커밋의 성격
  • scope: 영향 범위 (선택)
  • message: 무엇을 했는지 요약

Git 커밋 타입 정리

타입 의미 예시 주로 사용되는 파일
feat 새로운 기능 추가또는 기존 기능을 요구사항에 맞게 확장/변경 feat(chunking): 청킹 로직 기본 구조 추가 *.py, *.ts, *.js, service/, api/, controller/, domain/
fix 버그 수정 fix(chunking): 토큰 초과 청크 스킵 문제 수정 기존 로직 파일, 에러 처리 코드, 조건문이 있는 핵심 모듈
refactor 리팩토링 (기능 변화 없음) refactor(chunking): 함수 책임 분리 utils/, service/, 공통 함수 모듈
chore 설정, 환경, 잡일성 작업 chore: dependency 정리 .env, requirements.txt, poetry.lock, package.json, .gitignore
docs 문서 수정 docs: README 실행 방법 보완 README.md, docs/, *.md, 위키 문서
test 테스트 코드 추가/수정 test: 청킹 로직 단위 테스트 추가 tests/, __test__, test_*.py, *.spec.ts
style 코드 포맷, 스타일 수정 (로직 변화 없음) style: lint 규칙에 맞게 포맷 수정 공백/정렬만 바뀐 코드, 포맷터 적용 파일
build 빌드 시스템 관련 수정모듈 설치/삭제 build: torch 버전 업데이트 Dockerfile, Makefile, build.gradle, setup.py
ci CI/CD 설정 수정 ci: GitHub Actions 테스트 단계 추가 .github/workflows/*.yml, .gitlab-ci.yml, Jenkinsfile
release 버전 릴리즈 release: v1.2.0 CHANGELOG.md, VERSION, 태그(tag), 배포 스크립트

커밋 메시지 수정

 

1️⃣ 최근 커밋 로그 확인하기

git log --oneline -3

숫자는 최근으로 부터 총 몇개의 로그를 확인할 것인지를 의미한다.

 

확인해보면 6279c72는": "가 누락되었고, 961a1df는 type과 scope을 빼먹어버렸다..

그래서 이 두 커밋을 수정하려고 한다!

이럴 때 사용하는 것이 interactive rebase이다.

 

2️⃣ interactive rebase 시작

git rebase -i HEAD~2

최근 커밋 2개를 대상으로 rebase를 실행한다.

 

3️⃣ pick → reword로 변경

 

편집창에 아래처럼 표시된다.

pick cca320a feat(chunk): 청킹 로직 추가
pick 5fd1fef feat(chunk): 특정 json 청크 파일의 청크 설정토큰 기반 분해

 

여기서 pick을 reword로 변경한다.

reword cca320a feat(chunk): 청킹 로직 추가
reword 5fd1fef feat(chunk): 특정 json 청크 파일의 청크 설정토큰 기반 분해

그리고 저장 후 종료한다.

 

nano 기준

  • 저장: Ctrl + O → Enter
  • 종료: Ctrl + X

4️⃣ 커밋 메시지 수정

자동으로 커밋 메시지 편집창(COMMIT_EDITMSG)이 열린다. 이제 원하는 대로 수정하면 된다!

 

5️⃣ 결과 확인

rebase가 끝나면 터미널로 돌아온다.

git log --oneline -2

 

수정한 메시지가 그대로 보이면 성공이다!

 

6️⃣ 이미 원격에 push한 커밋인 경우

혹시라도 위에서 변경되지 않은 경우에는 이미 push가 되어있는 상태이다. 

커밋 메시지를 수정하면 커밋 해시가 변경된다.
이미 push된 커밋이라면 강제 푸시가 필요하다.

git push --force-with-lease
  • --force보다 안전한 옵션
  • 내가 최신 상태일 때만 강제 푸시됨

👉 아직 push하지 않았다면 이 단계는 생략해도 된다.


 

전체 수정과정 흐름을 요약하자면

git rebase -i HEAD~2

nano 편집창이 뜨면서
# pick → reword 변경 후 저장/종료
# 커밋 메시지 수정 (각각 저장/종료)

git log --oneline -2

# 이미 push한 브랜치라면
git push --force-with-lease