매일 쓰는 Git 명령어
Git 작업의 90%는 다섯 가지 명령어로 이루어집니다: status, add, commit, log, diff.
git status: 현재 상태 확인
git status
# 출력 예시
# On branch main
# Changes not staged for commit:
# modified: index.html
#
# Untracked files:
# style.css
파일 상태는 세 가지입니다.
flowchart LR
U["Untracked\n(새 파일)"]
M["Modified\n(수정됨)"]
S["Staged\n(스테이징됨)"]
C["Committed\n(저장됨)"]
U -->|"git add"| S
M -->|"git add"| S
S -->|"git commit"| C
C -->|"파일 수정"| M
git add: 스테이징
# 특정 파일만 추가
git add index.html
# 특정 폴더 전체
git add src/
# 현재 디렉토리 전체 (주의: 불필요한 파일 포함될 수 있음)
git add .
# 변경된 파일만 (새 파일 제외)
git add -u
# 대화형으로 선택
git add -p # 파일 내 특정 부분만 스테이징
git commit: 스냅샷 저장
# 커밋 메시지 포함
git commit -m "로그인 페이지 UI 추가"
# 스테이징 없이 바로 커밋 (새 파일 제외)
git commit -am "오타 수정"
# 좋은 커밋 메시지 형식
# feat: 새 기능
# fix: 버그 수정
# docs: 문서 수정
# style: 코드 포맷
# refactor: 리팩토링
# test: 테스트
# chore: 설정·빌드 변경
좋은 커밋 vs 나쁜 커밋
❌ "수정"
❌ "작업중"
❌ "asdfasdf"
✅ "feat: 사용자 로그인 폼 유효성 검사 추가"
✅ "fix: 모바일에서 메뉴 버튼 클릭 안 되던 문제 수정"
✅ "docs: API 인증 방법 README에 추가"
git log: 이력 조회
# 기본 로그
git log
# 한 줄로 요약
git log --oneline
# c3d4e5f (HEAD -> main) fix: 버그 수정
# b2c3d4e feat: 기능 추가
# a1b2c3d docs: README 추가
# 그래프와 함께 (브랜치 시각화)
git log --oneline --graph --all
# 특정 파일의 변경 이력
git log --oneline index.html
# 날짜 범위
git log --after="2026-01-01" --before="2026-04-01"
# 특정 사람의 커밋
git log --author="홍길동"
git diff: 변경 내용 비교
# 스테이징 전: 작업 디렉토리 vs 최근 커밋
git diff
# 스테이징 후: 스테이징 vs 최근 커밋
git diff --staged
# 두 커밋 비교
git diff a1b2c3d c3d4e5f
# 특정 파일만 비교
git diff index.html
# 출력 예시
# diff --git a/index.html b/index.html
# --- a/index.html
# +++ b/index.html
# @@ -1,5 +1,6 @@
# <html>
# - <title>제목</title>
# + <title>새 제목</title>
# + <meta charset="UTF-8">
git restore: 변경 취소
# 작업 디렉토리의 변경 취소 (마지막 커밋 상태로)
git restore index.html
# 스테이징 취소 (add 이전으로)
git restore --staged index.html
# 특정 커밋 시점의 파일로 복원
git restore --source=a1b2c3d index.html
실전 워크플로우
# 1. 현재 상태 확인
git status
# 2. 변경 내용 검토
git diff
# 3. 스테이징
git add src/login.js src/login.css
# 4. 커밋
git commit -m "feat: 로그인 폼 스타일 개선"
# 5. 이력 확인
git log --oneline
정리
| 명령어 | 역할 |
|---|---|
git status | 현재 파일 상태 확인 |
git add <file> | 스테이징 영역에 추가 |
git commit -m "msg" | 커밋 생성 |
git log --oneline | 커밋 이력 요약 조회 |
git diff | 변경 내용 비교 |
git restore <file> | 변경 취소 |
다음 편에서는 브랜치와 머지 — 독립적인 작업 공간을 만들고 합치는 방법을 배웁니다.