git commit
한 줄 요약
Stage에 올린 변경사항을 저장소에 영구적으로 기록
선행 지식
기본 사용법
git commit -m "커밋 메시지"Stage에 있는 변경사항을 새로운 Commit으로 저장합니다.
주요 옵션
| 옵션 | 설명 | 예시 |
|---|---|---|
-m "메시지" | 커밋 메시지 작성 | git commit -m "feat: 로그인 추가" |
-a | 추적 파일 자동 stage | git commit -am "fix: 버그 수정" |
--amend | 직전 커밋 수정 | git commit --amend |
--no-edit | 메시지 수정 없이 amend | git commit --amend --no-edit |
-v | diff를 에디터에 표시 | git commit -v |
실제 예제
기본 커밋
# 1. 변경사항을 Stage에 추가
git add app.js
# 2. 커밋
git commit -m "feat: 사용자 인증 기능 추가"add와 commit 동시에
# 이미 추적 중인 파일만 해당
git commit -am "fix: 로그인 버그 수정"주의
-a옵션은 **새 파일(untracked)**은 포함하지 않습니다.
에디터로 상세 메시지 작성
git commit
# 에디터가 열림에디터에서 작성:
feat: 사용자 인증 기능 추가
- JWT 토큰 기반 인증 구현
- 로그인/로그아웃 API 추가
- 인증 미들웨어 작성
Closes #123
직전 커밋 수정 (amend)
# 메시지만 수정
git commit --amend -m "새로운 메시지"
# 파일 추가 후 커밋에 포함
git add 누락된파일.js
git commit --amend --no-edit주의
이미 push한 커밋은 amend하지 마세요! → push를 취소하고 싶을 때 참고
좋은 커밋 메시지 작성법
기본 형식
타입: 제목 (50자 이내)
본문 (선택사항)
- 무엇을 왜 변경했는지 설명
- 72자마다 줄바꿈
꼬리말 (선택사항)
Closes #이슈번호
타입 종류
| 타입 | 설명 | 예시 |
|---|---|---|
feat | 새로운 기능 | feat: 회원가입 기능 추가 |
fix | 버그 수정 | fix: 로그인 오류 수정 |
docs | 문서 수정 | docs: README 업데이트 |
style | 코드 스타일 (기능 변화 X) | style: 들여쓰기 수정 |
refactor | 리팩토링 | refactor: 인증 로직 분리 |
test | 테스트 | test: 로그인 테스트 추가 |
chore | 기타 작업 | chore: 패키지 업데이트 |
좋은 예시
# ✅ 좋은 예시
git commit -m "feat: 이메일 중복 검사 기능 추가"
git commit -m "fix: 비밀번호 특수문자 입력 시 오류 수정"
git commit -m "docs: API 문서에 인증 섹션 추가"
# ❌ 나쁜 예시
git commit -m "수정"
git commit -m "버그 고침"
git commit -m "asdfasdf"
git commit -m "작업 중"커밋 취소/수정하기
| 상황 | 해결 방법 |
|---|---|
| 메시지를 잘못 씀 | git commit --amend -m "새 메시지" |
| 파일을 빠뜨림 | git add 파일 → git commit --amend --no-edit |
| 커밋 자체를 취소 (로컬) | git reset |
| 커밋을 되돌리기 (원격) | git revert |
자주 하는 실수
”nothing to commit” 에러
$ git commit -m "메시지"
nothing to commit, working tree clean원인: Stage에 아무것도 없음
해결:
git add .
git commit -m "메시지"“Please enter a commit message” 에디터가 열림
원인: -m 옵션 없이 실행
해결:
- 에디터에서 메시지 작성 후 저장/종료
- 또는
:q!로 취소 (Vim의 경우)
예방:
git commit -m "메시지" # -m 옵션 사용잘못된 브랜치에서 커밋
해결 (아직 push 안 했다면):
# 커밋 취소 (변경사항은 유지)
git reset --soft HEAD~1
# 올바른 브랜치로 이동
git switch correct-branch
# 다시 커밋
git commit -m "메시지"→ 잘못된 브랜치에서 작업했을 때 참고
커밋 히스토리 확인
# 기본 로그
git log
# 한 줄씩
git log --oneline
# 최근 3개만
git log -3
# 그래프로
git log --oneline --graph --all→ git log 참고
관련 명령어
- git add - Stage에 추가
- git status - 현재 상태 확인
- git log - 커밋 히스토리 조회
- git reset - 커밋 취소
- git revert - 커밋 되돌리기
더 알아보기
- Commit - 커밋의 개념
- 변경사항 저장하기 - 전체 저장 워크플로우
- 커밋 메시지 수정하기 - 커밋 메시지 변경 방법