Commit

한 줄 요약

변경사항을 저장소에 영구적으로 기록하는 스냅샷

개요

Commit(커밋)은 특정 시점의 프로젝트 상태를 저장하는 것입니다. 게임의 세이브 포인트와 같습니다. 언제든 이전 commit으로 돌아갈 수 있습니다.

핵심 포인트

  • 각 commit은 고유한 ID(해시값)를 가짐
  • commit에는 변경 내용 + 메시지 + 작성자 + 시간이 기록됨
  • commit은 이전 commit을 참조하여 히스토리 체인을 형성

시각적 이해

Commit의 구조

┌─────────────────────────────────────┐
│            Commit                   │
├─────────────────────────────────────┤
│ ID: a1b2c3d                         │
│ 부모: 9x8y7z6 (이전 커밋)            │
│ 작성자: 홍길동 <hong@example.com>    │
│ 날짜: 2024-12-04 10:30:00           │
│ 메시지: "로그인 기능 추가"           │
├─────────────────────────────────────┤
│ 변경된 파일들의 스냅샷               │
│ - login.js (추가)                   │
│ - app.js (수정)                     │
└─────────────────────────────────────┘

Commit 히스토리 체인

[c1]───▶[c2]───▶[c3]───▶[c4]  ← HEAD (현재 위치)
 │       │       │       │
 └───────┴───────┴───────┴── 각 커밋이 이전 커밋을 참조

Commit 만들기

commit을 만들려면 두 단계가 필요합니다:

1단계: Stage에 올리기

git add 파일명

어떤 변경사항을 commit할지 선택합니다. → git add 참고

2단계: Commit 생성

git commit -m "변경 내용 설명"

선택한 변경사항을 저장소에 기록합니다. → git commit 참고

Commit ID (해시)

각 commit은 40자리 해시값으로 식별됩니다:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0

보통 앞 7자리만 사용해도 구분할 수 있습니다:

git show a1b2c3d

좋은 Commit 메시지 작성법

기본 형식

타입: 제목 (50자 이내)

본문 (선택사항, 72자 줄바꿈)
- 무엇을 왜 변경했는지 설명

타입 예시

타입설명
feat새로운 기능 추가
fix버그 수정
docs문서 수정
style코드 포맷팅 (기능 변화 없음)
refactor코드 리팩토링
test테스트 추가/수정

좋은 예시 vs 나쁜 예시

# ❌ 나쁜 예시
git commit -m "수정"
git commit -m "버그 고침"
git commit -m "asdf"
 
# ✅ 좋은 예시
git commit -m "feat: 로그인 폼 유효성 검사 추가"
git commit -m "fix: 비밀번호 입력 시 특수문자 처리 오류 수정"

Commit 히스토리 보기

# 기본 로그
git log
 
# 한 줄씩 보기
git log --oneline
 
# 그래프로 보기
git log --oneline --graph

git log 참고

Commit과 관련된 작업

하고 싶은 일명령어참고
commit 내용 보기git show 커밋IDgit log
commit 취소하기git resetgit reset
commit 되돌리기git revertgit revert
commit 메시지 수정git commit --amend커밋 메시지 수정하기

자주 하는 실수

”nothing to commit” 메시지

원인: git add를 하지 않음

해결:

git add 파일명
git commit -m "메시지"

커밋 메시지를 잘못 작성

해결 (직전 커밋만 가능):

git commit --amend -m "새로운 메시지"

커밋 메시지 수정하기 참고

관련 명령어

더 알아보기