모든 강의를 무료로 볼 수 있어요. 회원가입 없이도 학습 가능합니다.

4강 / 전체 7강

add와 commit

9분 읽기 조회 3

git status로 현재 상태 파악, git add로 스테이징, git commit으로 스냅샷 저장, 좋은 커밋 메시지 작성법, git log로 이력 확인까지 Git의 핵심 작업 사이클을 완전히 익힙니다.

🎯 학습 목표

이 강을 마치면 다음을 할 수 있습니다.

  • git status로 현재 작업 상태를 확인할 수 있습니다.
  • git add로 원하는 파일을 스테이징 영역에 올릴 수 있습니다.
  • git commit으로 의미 있는 스냅샷을 저장할 수 있습니다.
  • 좋은 커밋 메시지를 작성하는 원칙을 이해하고 적용할 수 있습니다.
  • git log로 커밋 히스토리를 조회할 수 있습니다.

🔄 Git의 핵심 사이클 — 수정·스테이징·커밋

이 섹션에서는 Git으로 작업할 때 매번 반복하는 기본 사이클의 전체 흐름을 살펴보겠습니다.

Git을 사용한 작업은 다음 사이클의 반복입니다. 이 사이클을 체득하면 Git 사용의 90%를 마스터한 것입니다.

  1. 파일 수정: 에디터에서 코드나 문서를 작성·수정합니다. (일반적인 파일 작업)
  2. 상태 확인: git status로 어떤 파일이 변경됐는지 확인합니다.
  3. 스테이징: git add로 커밋할 파일을 선택해 스테이징 영역에 올립니다.
  4. 커밋: git commit으로 스테이징 영역의 내용을 스냅샷으로 저장합니다.
  5. → 1번으로 돌아가 반복
# 기본 사이클 요약
git status           # 현재 상태 확인
git add 파일명       # 스테이징
git commit -m "메시지"  # 커밋

📊 git status — 현재 상태 파악하기

이 섹션에서는 Git의 현재 상태를 확인하는 가장 중요한 명령어 git status를 살펴보겠습니다.

git status는 Git 사용 중 가장 자주 실행하는 명령어입니다. 어떤 파일이 변경됐는지, 스테이징 영역에 무엇이 있는지, 어느 브랜치에 있는지 현재 상태를 모두 보여줍니다. 무엇을 하기 전에 항상 git status부터 확인하는 습관을 들이세요.

git status

git status 출력에는 여러 상태가 나타납니다.

# 상태 1: 깨끗한 상태 (변경 사항 없음)
On branch main
nothing to commit, working tree clean

# 상태 2: 수정된 파일이 있는 경우
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
        modified:   index.html     # 이미 추적 중인 파일이 수정됨

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        style.css                  # Git이 아직 추적하지 않는 새 파일

# 상태 3: add 후 스테이징된 경우
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   style.css
        modified:   index.html

파일의 상태는 크게 네 가지입니다.

  • Untracked: Git이 아직 추적하지 않는 새 파일
  • Modified: 이미 추적 중인 파일이 수정됨 (스테이징 안 됨)
  • Staged: git add로 스테이징 영역에 올라간 상태
  • Committed: 저장소에 안전하게 저장된 상태 (status에 표시 안 됨)

➕ git add — 스테이징하기

이 섹션에서는 커밋할 변경 사항을 스테이징 영역에 올리는 git add의 다양한 사용법을 살펴보겠습니다.

git add는 변경된 파일을 스테이징 영역으로 보냅니다. 어떤 파일을 다음 커밋에 포함할지 선택하는 단계입니다.

# 특정 파일 스테이징
git add index.html

# 여러 파일 한 번에 스테이징
git add index.html style.css script.js

# 특정 폴더 전체 스테이징
git add src/

# 현재 폴더의 모든 변경 사항 스테이징 (. = 현재 폴더)
git add .

# 변경된 모든 파일 스테이징 (Untracked 파일 포함)
git add -A

git add .과 git add -A의 차이는 미묘합니다. git add .은 현재 폴더와 하위 폴더의 변경 사항을 추가하고, git add -A는 저장소 전체를 대상으로 합니다. 대부분의 경우 프로젝트 루트에서 실행하면 차이가 없습니다.

주의: git add .이나 git add -A는 편리하지만 원하지 않는 파일(API 키가 담긴 설정 파일, 임시 파일)도 함께 스테이징될 수 있습니다. 중요한 커밋 전에는 파일별로 추가하거나, git status로 무엇이 스테이징됐는지 확인하는 것이 안전합니다.

스테이징을 취소하고 싶다면 git restore --staged를 사용합니다.

# 스테이징 취소 (파일 내용은 그대로, 스테이징만 해제)
git restore --staged index.html

# 스테이징된 모든 파일 취소
git restore --staged .

💾 git commit — 스냅샷 저장하기

이 섹션에서는 스테이징 영역의 내용을 영구 저장소에 기록하는 git commit을 살펴보겠습니다.

git commit은 스테이징 영역에 있는 변경 사항을 하나의 스냅샷으로 저장소에 영구 기록합니다. 커밋 하나가 "프로젝트가 이 시점에 이 상태였다"는 기록입니다.

# 가장 기본적인 커밋 방법 (메시지 인라인 작성)
git commit -m "첫 번째 HTML 파일 추가"

# 스테이징과 커밋 한 번에 (이미 추적 중인 파일만, Untracked 제외)
git commit -am "index.html 헤더 수정"

# 출력 예시:
# [main (root-commit) a1b2c3d] 첫 번째 HTML 파일 추가
#  1 file changed, 20 insertions(+)
#  create mode 100644 index.html

출력에서 a1b2c3d가 이 커밋의 고유 식별자(해시)입니다. SHA-1 해시의 앞 7자리를 보여주며, 전체는 40자리입니다. 이 해시로 특정 커밋을 참조할 수 있습니다.

✍️ 좋은 커밋 메시지 작성법

이 섹션에서는 미래의 나와 팀원이 감사할 좋은 커밋 메시지를 작성하는 원칙을 살펴보겠습니다.

커밋 메시지는 단순한 메모가 아닙니다. 3개월 후, 혹은 팀원이 이 커밋을 볼 때 "왜 이 변경을 했는가"를 이해하는 핵심 정보입니다. 좋은 커밋 메시지는 코드만큼 중요합니다.

나쁜 커밋 메시지좋은 커밋 메시지
"수정""로그인 버튼 클릭 시 페이지 이동 오류 수정"
"작업 중""회원가입 폼 유효성 검사 로직 추가"
"asdf""README에 설치 방법 섹션 추가"
"fix""모바일 화면에서 네비게이션 메뉴 겹침 현상 수정"

커밋 메시지 작성 원칙입니다.

  • 명령형 현재 시제 사용: "수정함"이 아니라 "수정" / "Add"가 아니라 "Added"보다 "Add"
  • 50자 이내 제목: 한눈에 파악할 수 있는 간결한 제목
  • 무엇(What)보다 왜(Why): 코드를 보면 무엇을 바꿨는지 알 수 있습니다. 메시지에는 왜 바꿨는지를 담으세요.
  • 영문 메시지 팁: 영문 커밋 메시지는 동사 원형으로 시작하는 것이 컨벤션. "Fix bug"(O), "Fixed bug"(X), "Fixes bug"(X)

팀에서 커밋 메시지 형식을 통일하는 Conventional Commits 컨벤션이 널리 사용됩니다.

# Conventional Commits 형식: type: 내용
feat: 사용자 로그인 기능 추가
fix: 회원가입 페이지 폼 제출 오류 수정
docs: README 설치 가이드 업데이트
style: 코드 들여쓰기 정리 (기능 변경 없음)
refactor: 인증 모듈 구조 개선
test: 로그인 API 단위 테스트 추가
chore: 패키지 의존성 업데이트

📜 git log — 커밋 히스토리 보기

이 섹션에서는 저장된 커밋 히스토리를 다양한 방식으로 조회하는 git log를 살펴보겠습니다.

git log는 지금까지 만든 커밋 목록을 최신순으로 보여줍니다.

# 기본 로그 보기
git log

# 출력 예시:
# commit a1b2c3d4e5f6... (HEAD -> main)
# Author: 홍길동 <gildong@example.com>
# Date:   Mon Jan 15 14:30:00 2024 +0900
#
#     feat: 로그인 기능 추가
#
# commit 7890abcdef12...
# Author: 홍길동 <gildong@example.com>
# Date:   Mon Jan 15 11:00:00 2024 +0900
#
#     docs: README 초기 버전 작성

# 한 줄 요약으로 보기 (여러 커밋 한눈에 확인)
git log --oneline

# 출력:
# a1b2c3d (HEAD -> main) feat: 로그인 기능 추가
# 7890abc docs: README 초기 버전 작성
# 3d4e5f6 chore: 프로젝트 초기화

# 그래프와 함께 보기 (브랜치 분기 확인)
git log --oneline --graph --all

# 특정 파일의 변경 이력만 보기
git log --oneline -- index.html

# 최근 N개만 보기
git log -3

git log 화면에서 나가려면 q를 누릅니다. (Less 뷰어 종료)

📝 핵심 요약

4강에서 배운 내용을 정리해 보겠습니다.

# 오늘의 핵심 명령어

git status              # 현재 상태 확인 (습관적으로 자주!)
git add 파일명          # 특정 파일 스테이징
git add .               # 전체 변경 사항 스테이징
git restore --staged 파일명  # 스테이징 취소
git commit -m "메시지"  # 커밋 (스냅샷 저장)
git log --oneline       # 커밋 이력 한 줄로 보기

다음 강인 5강 — 변경 확인에서는 파일이 어떻게 변경됐는지 상세하게 확인하는 git diff와 특정 커밋의 상세 내용을 보는 git show를 배웁니다. 내가 무엇을 바꿨는지 정확히 파악하는 능력이 커밋 전 검토와 버그 추적의 핵심입니다!

관련 주제

  • git status
  • git add
  • git commit
  • 커밋 메시지 작성법
  • git log
  • 스냅샷 저장
  • 개발·프로그래밍
  • 개발·프로그래밍 강의
  • 깃허브 사용법 18강 — Git & GitHub 협업
  • 무료강의
  • 무료 온라인 강의
  • NUGUNA
  • 누구나

📚 시리즈 전체 공유

깃허브 사용법 18강 — Git & GitHub 협업

이 강의가 속한 시리즈는 총 7강, 모두 무료입니다. 처음부터 배우려는 동료에게 시리즈 전체를 알려 주세요.

댓글

0/1000

불러오는 중...