이 영역을 누르면 첫 페이지로 이동
Daily Growth 블로그의 첫 페이지로 이동

Daily Growth

페이지 맨 위로 올라가기

Daily Growth

Loving you is the reason I live. That’s why every day is precious, a step toward my dreams and you.

Git 파일 상태 추적부터 복원까지 | Reset, Restore, rm

  • 2025.07.06 04:01
  • IT

git working directory staging area repository

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

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 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
다른 글 더 둘러보기

정보

Daily Growth 블로그의 첫 페이지로 이동

Daily Growth

  • Daily Growth의 첫 페이지로 이동

검색

메뉴

    카테고리

    • 분류 전체보기 (470)
      • Design History (69)
      • IT (170)
      • Typography (13)
      • UX • UI Design (11)
      • Money (62)
      • Health (53)
      • Words (6)
      • Reading (21)
      • English (64)

    나의 외부 링크

    • Daily Growth
    • Daily World
    • lody.design
    • lody.diary

    정보

    self-improvement의 Daily Growth

    Daily Growth

    self-improvement

    블로그 구독하기

    • 구독하기
    • 네이버 이웃 맺기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. Copyright © self-improvement.

    티스토리툴바