나만의공간
Git 4회차. Git의 3단계 구조 - Working → Staging → Commit 본문
📂 Git 4회차. Git의 3단계 구조 - Working → Staging → Commit 완벽 이해하기
Git은 단순한 저장소가 아니라 '3단계 구조'로 정리된 똑똑한 버전 관리 시스템이에요. 이번 회차에서는 개발자가 Git을 사용할 때 반드시 이해해야 할 핵심 구조인 워킹 디렉토리, 스테이징 영역, 로컬 저장소의 개념과 흐름을 차근차근 설명드릴게요 😊
🧠 Git은 어떻게 파일을 추적할까?
이전 회차에서 우리는 git init으로 저장소를 만들고, .git 폴더가 생성되는 과정을 배웠죠. 그런데 Git은 단순히 파일을 보관하는 것 이상으로 똑똑하게 작업 파일의 상태 변화를 추적합니다.
이를 위해 Git은 내부적으로 파일의 상태를 관리하는 3단계 구조를 가지고 있어요.
🔍 Git의 3단계 구조란?
Git에서 버전 관리가 일어나는 흐름은 다음 세 단계로 나뉘어져 있습니다:
- Working Directory (작업 디렉토리)
- Staging Area (스테이징 영역)
- 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의 진짜 강점을 살펴보는 시간입니다!
'IT > Git' 카테고리의 다른 글
| Git 6회차. GitHub와 연결하기 #6 (4) | 2025.07.11 |
|---|---|
| Git 5회차. Git 로그와 상태 확인 - git status, git log, git diff #5 (7) | 2025.07.10 |
| Git 3회차. Git 저장소 만들기(Local Repo) (2) | 2025.07.10 |
| Git 2회차. Git 설치 및 환경 설정 (1) | 2025.07.10 |
| Git 1회차. Git이 뭐야? 왜 써야 해? (0) | 2025.07.10 |
