나만의공간

Git 4회차. Git의 3단계 구조 - Working → Staging → Commit 본문

IT/Git

Git 4회차. Git의 3단계 구조 - Working → Staging → Commit

밥알이 2025. 7. 10. 07:31

📂 Git 4회차. Git의 3단계 구조 - Working → Staging → Commit 완벽 이해하기

Git은 단순한 저장소가 아니라 '3단계 구조'로 정리된 똑똑한 버전 관리 시스템이에요. 이번 회차에서는 개발자가 Git을 사용할 때 반드시 이해해야 할 핵심 구조인 워킹 디렉토리, 스테이징 영역, 로컬 저장소의 개념과 흐름을 차근차근 설명드릴게요 😊


🧠 Git은 어떻게 파일을 추적할까?

이전 회차에서 우리는 git init으로 저장소를 만들고, .git 폴더가 생성되는 과정을 배웠죠. 그런데 Git은 단순히 파일을 보관하는 것 이상으로 똑똑하게 작업 파일의 상태 변화를 추적합니다.

이를 위해 Git은 내부적으로 파일의 상태를 관리하는 3단계 구조를 가지고 있어요.


🔍 Git의 3단계 구조란?

Git에서 버전 관리가 일어나는 흐름은 다음 세 단계로 나뉘어져 있습니다:

  1. Working Directory (작업 디렉토리)
  2. Staging Area (스테이징 영역)
  3. Repository (로컬 저장소)

각 단계는 서로 다른 역할을 가지고 있어요. 아래에서 하나씩 자세히 살펴볼게요 👇


📁 1. Working Directory - 작업 공간

여기서 말하는 워킹 디렉토리는 우리가 직접 코드 작업을 하는 곳이에요. 즉, **현재 파일이 저장되어 있는 폴더**를 의미합니다.

  • ✔️ 에디터에서 코드를 수정하거나 새 파일을 만들면, 이 단계에서 변경이 이루어집니다.
  • ✔️ Git은 이 상태를 'Untracked(추적되지 않음)' 또는 'Modified(수정됨)'으로 인식합니다.

예시

$ touch hello.py     # 새 파일 생성
$ git status
Untracked files:
  (use \"git add ...\" to include in what will be committed)
        hello.py

📦 2. Staging Area - 임시 저장 공간

스테이징 영역은 말 그대로 커밋하기 전에 어떤 파일을 저장할지를 결정하는 공간이에요.

  • ✔️ git add 파일명 명령어를 통해 파일을 스테이징 영역에 올립니다.
  • ✔️ 올려진 파일은 Git이 \"다음 커밋 때 포함할 대상\"으로 인식합니다.

예시

$ git add hello.py
$ git status
Changes to be committed:
  (use \"git restore --staged ...\" to unstage)
        new file:   hello.py

스테이징 영역은 말하자면 ‘대기 명단’ 같은 거예요. 커밋하기 전에 이 파일들을 미리 골라놓는 과정이죠.


반응형

💾 3. Repository - 로컬 저장소

로컬 저장소는 Git이 버전 히스토리를 보관하는 공간입니다. 이곳에 저장된 내용은 .git 폴더 내부의 objects, commits 등으로 관리됩니다.

  • ✔️ git commit 명령어를 사용하면, 스테이징에 올려둔 파일들이 로컬 저장소에 커밋되어 저장됩니다.
  • ✔️ 커밋 시점부터 Git은 해당 파일의 버전을 기록합니다.

예시

$ git commit -m \"첫 번째 커밋\"
[main (root-commit) 9fceb02] 첫 번째 커밋
 1 file changed, 0 insertions(+), 0 deletions(+)
 create mode 100644 hello.py

🔄 Git의 흐름 요약

Git의 파일 추적 흐름을 시각적으로 정리하면 이렇게 됩니다:

[ Working Directory ] 
        |
        v
    git add
        |
        v
[ Staging Area ]
        |
        v
   git commit
        |
        v
[ Local Repository ]

이제 우리는 단순히 코드를 작성하는 것을 넘어서, 어떤 시점에 어떤 파일이 포함되는지를 명확히 제어할 수 있게 되었어요 💪


🛠️ git add & git commit 사용법 정리

✅ git add

  • git add 파일명 : 특정 파일만 스테이징
  • git add . : 현재 디렉토리의 모든 변경 파일을 스테이징
  • git add -A : 새 파일, 수정 파일, 삭제 파일 모두 반영

✅ git commit

  • git commit -m \"메시지\" : 메시지를 함께 기록하는 일반적인 방식
  • git commit : 에디터가 열려 커밋 메시지를 직접 작성

이 두 명령어는 Git의 핵심 중 핵심입니다. Git에서 거의 매일 사용하는 기본기이기도 하죠.


📝 커밋 메시지 잘 쓰는 법

커밋 메시지는 단순히 메모가 아니에요. 팀원에게 어떤 변경이 있었는지 정확히 전달하는 기록이자, 미래의 나에게 보내는 설명서입니다 🧭

📌 좋은 커밋 메시지의 조건

  • ✔️ 변경된 핵심 내용이 명확히 드러나야 해요
  • ✔️ 너무 길거나 모호하지 않아야 해요
  • ✔️ 과거 커밋 메시지만 읽고도 프로젝트 흐름을 파악할 수 있어야 해요

🧾 커밋 메시지 예시

[좋음] fix: 로그인 시 비밀번호 암호화 로직 수정
[좋음] feat: 게시판 댓글 기능 추가
[나쁨] 수정함
[나쁨] 커밋

💡 TIP: 커밋 메시지 규칙

많은 팀들이 Conventional Commit이라는 스타일을 사용합니다:

타입: 변경사항 설명 (영문 권장)

예시:
feat: 회원가입 기능 구현
fix: 프로필 사진 업로드 버그 수정
refactor: 중복 로직 함수로 분리

이 스타일을 따르면 나중에 자동 릴리즈나 changelog 생성도 가능해져요!


📌 마무리 요약

  • ✔️ Git은 파일의 상태를 Working → Staging → Commit으로 추적 관리합니다
  • ✔️ git add로 스테이징, git commit으로 저장소 기록
  • ✔️ 커밋 메시지는 단순한 메모가 아닌 협업의 핵심 도구입니다

이제 여러분은 Git의 버전 관리 시스템이 얼마나 구조적이고 체계적인지 깊이 이해하게 되었어요 😊


📎 다음 회차 예고

5회차. 커밋 히스토리 분석하기 - git log, git diff, git show

✔️ 내 커밋 히스토리를 어떻게 볼까? ✔️ 커밋 간 변경 내용 추적하는 법 ✔️ Git의 진짜 강점을 살펴보는 시간입니다!


Comments