GitGit/GitHub 기초 · 2입문

Git 기본 명령어 — add, commit, log, diff

Gitgit addgit commitgit loggit diff

매일 쓰는 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>변경 취소

다음 편에서는 브랜치와 머지 — 독립적인 작업 공간을 만들고 합치는 방법을 배웁니다.

궁금한 점이 있으신가요?

협업·의뢰는 아래로, 가벼운 소통은 인스타그램 @bluefox._.hi도 환영이에요.