Git 파일 상태 추적부터 복원까지 | Reset, Restore, rm
Git의 3가지 공간: Working Directory, Staging Area, Repository
Working Directory, Staging Area, Repository 🖤 Git에는 3가지 공간이 있다. 버전 관리 시스템인 Git은 협업의 기본 도구로 자리잡았지만, 처음 접하면 add, commit, reset 같은 명령어들이 낯설고 어렵게 느껴질 수 있다.
Git의 구조는 왜 3단계로 나뉘는가?
Git은 파일의 변경 사항을 추적하고 버전 관리를 효율적으로 하기 위해 3가지 공간으로 나누어 관리한다.
1️⃣ Working Directory
2️⃣ Staging Area
3️⃣ Repository
이 3가지 공간은 각각 역할이 다르고, 개발자가 작성한 코드는 이 세 단계를 거쳐 최종적으로 저장소에 안전하게 보관된다.
1. Working Directory: 개발자가 직접 작업하는 공간
Working Directory(작업 디렉토리) 는 쉽게 말해 내가 실제로 코드를 작성하고 수정하는 실제 폴더다. 여기에는 두 가지 상태의 파일이 있다.
- Untracked 파일: Git이 아직 한 번도 관리하지 않은 파일. 예를 들어 새로 만든 test.py 같은 파일은 git add를 하기 전까지는 Git의 관리 대상이 아니다.
- Tracked 파일: 한 번이라도 git add 되어 Git이 관리하기로 등록된 파일. 수정이 일어나면 변경 내역이 발생한다.
2. Staging Area: 커밋을 위한 대기실
Staging Area(스테이징 영역) 는 커밋하기 전에 어떤 파일을 저장할지 선택해두는 공간이다.
git add 명령어를 사용하면 Working Directory의 변경사항을 Staging Area로 옮길 수 있다.
즉, 여러 파일 중에 원하는 파일만 선택적으로 커밋할 수 있다는 뜻이다.
3. Repository: 최종 저장소
Repository(저장소) 는 .git 폴더로 관리되며, 커밋이 끝난 파일들이 안전하게 저장되는 공간이다.
git commit 명령어를 사용하면 Staging Area에 있는 파일들이 Repository로 옮겨져 새로운 버전으로 기록된다.
식기세척기 비유로 보는 Git의 상태
상태 | 설명 | 비유 |
Untracked | Git이 모르는 파일 | 식기세척기에 들어가 본 적 없는 그릇 |
Tracked | Git이 알고 있는 파일 | 세척기 사용 가능한 그릇 |
Add | Staging Area로 이동 | 식기세척기에 넣기 |
Staging Area | 커밋 대기 상태 | 식기세척기 내부 |
Commit | 저장소에 저장 | 세척 완료 |
Repository | 커밋된 상태 | 깨끗하게 보관된 그릇 |
수정 발생 | 파일 변경 | 그릇이 다시 더러워짐 |
핵심 명령어 정리
아래는 Git의 3가지 공간을 이동할 때 자주 사용하는 명령어다.
git add
변경된 파일을 Staging Area로 이동시킨다.
git add 파일명
git commit
Staging Area의 내용을 Repository로 저장한다.
git commit -m "커밋 메시지"
git status
현재 파일 상태를 확인한다. 어떤 파일이 Untracked인지, Staging Area에 있는지, 커밋이 필요한지 알 수 있다.
git status
파일 삭제와 이동 명령어
파일을 삭제하거나 이름을 바꾸면 Git에서도 이를 관리해주어야 한다.
- 파일 삭제: git rm→ Staging Area에 삭제 기록이 올라간다.
- git rm tigers.yaml
- 파일 복원: git reset --hard
→ Working Directory에서 삭제된 파일까지 완전히 복원할 수 있다. - 파일 이름 변경: git mv
- git mv tigers.yaml zzamtigers.yaml
Staging Area에서 다시 Working Directory로 되돌리기
Staging Area에 올라간 파일을 다시 Working Directory로 내리고 싶다면?
git restore --staged 파일명
이전에는 아래처럼 썼다. (다음번에 더 자세히 공부해볼것 ㅎㅎ)
git reset HEAD 파일명
reset 옵션 완전 정복
Git의 reset은 강력하지만 위험할 수 있으므로 반드시 이해하고 사용하자:)
옵션 | 의미 |
--soft | Repository → Staging Area |
--mixed (기본) | Repository → Working Directory |
--hard | 모든 변경사항 삭제 |
+정리
Git의 3가지 공간은 어렵게 느껴지지만, 사실 개념은 단순하다.
- 코드를 작성하고 수정하는 곳: Working Directory
- 커밋할 파일을 고르는 대기실: Staging Area
- 안전하게 버전을 기록하는 곳: Repository
'IT' 카테고리의 다른 글
Git 설정 / 전역과 로컬 설정부터 core.autocrlf / Git 단축키(alias) (1) | 2025.07.06 |
---|---|
Detached HEAD 상태란? Git에서 과거 커밋 탐색과 안전한 작업법 (0) | 2025.07.06 |
개발 입문자를 위한 버전 관리 시스템 쉽게 이해하기: Git과 SVN의 차이 (0) | 2025.07.05 |
원격 저장소 추가부터 브랜치 삭제까지: Git 핵심 명령어 모음 (git push, pull, fetch, switch, -c, -t, -u) (0) | 2025.07.04 |
Git과 GitHub 협업 가이드: 토큰 만들기부터 충돌 해결까지 (0) | 2025.07.03 |
댓글
이 글 공유하기
다른 글
-
Git 설정 / 전역과 로컬 설정부터 core.autocrlf / Git 단축키(alias)
Git 설정 / 전역과 로컬 설정부터 core.autocrlf / Git 단축키(alias)
2025.07.06 -
Detached HEAD 상태란? Git에서 과거 커밋 탐색과 안전한 작업법
Detached HEAD 상태란? Git에서 과거 커밋 탐색과 안전한 작업법
2025.07.06 -
개발 입문자를 위한 버전 관리 시스템 쉽게 이해하기: Git과 SVN의 차이
개발 입문자를 위한 버전 관리 시스템 쉽게 이해하기: Git과 SVN의 차이
2025.07.05 -
원격 저장소 추가부터 브랜치 삭제까지: Git 핵심 명령어 모음 (git push, pull, fetch, switch, -c, -t, -u)
원격 저장소 추가부터 브랜치 삭제까지: Git 핵심 명령어 모음 (git push, pull, fetch, switch, -c, -t, -u)
2025.07.04