Git - 02 - 코드가 저장되는 영역별 구조
📌 Git에서 코드가 저장되는 영역별 구조
Git은 파일을 여러 저장 영역(Stage) 에 걸쳐 관리하며, 각 단계에서 파일이 저장되는 방식이 다릅니다.
Git에서 코드가 저장되는 주요 영역은 다음과 같습니다:
1️⃣ 작업 디렉토리 (Working Directory)
2️⃣ 스테이징 영역 (Staging Area, Index)
3️⃣ 로컬 저장소 (Local Repository)
4️⃣ 원격 저장소 (Remote Repository)
🛠 1️⃣ 작업 디렉토리 (Working Directory)
📌 역할:
- 실제로 파일을 생성하고 수정하는 영역
- Git이 아직 추적하지 않거나(Untracked) 변경이 이루어진 파일이 존재하는 공간
📌 특징:
✅ Git이 직접 관리하지 않는 상태의 파일 (Untracked
)
✅ 수정했지만 아직 Git에 반영되지 않은 파일 (Modified
)
📌 예제:
echo "Hello Git" > hello.txt # 새 파일 생성
git status # 상태 확인
출력 예시 (Git이 아직 추적하지 않는 파일)
Untracked files: (use "git add <file>..." to include in what will be committed) hello.txt
💡 즉, 작업 디렉토리는 파일을 편집하는 공간이지만, Git이 바로 추적하지는 않음!
🛠 2️⃣ 스테이징 영역 (Staging Area, Index)
📌 역할:
- 커밋할 파일을 준비(추적) 하는 공간
git add
명령을 실행하면 변경 사항이 스테이징 영역에 추가됨
📌 특징:
✅ Git이 추적하는 상태 (Staged
)
✅ git commit
을 실행하면 로컬 저장소로 이동
📌 예제:
git add hello.txt # 스테이징 영역에 추가
git status # 상태 확인
출력 예시 (스테이징 상태)
Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: hello.txt
💡 즉, 스테이징 영역은 “Git에 커밋할 준비가 된 변경 사항을 저장하는 공간”!
🛠 3️⃣ 로컬 저장소 (Local Repository)
📌 역할:
git commit
을 실행하면 로컬 저장소(Local Repository) 에 영구 저장됨- Git이 관리하는
.git
폴더 내부에서 히스토리(스냅샷)로 기록됨 - 필요할 때 과거 버전으로 되돌릴 수 있음
📌 특징:
✅ git commit
을 하면 로컬 저장소에 스냅샷으로 저장됨
✅ git log
를 통해 커밋 히스토리 확인 가능
✅ .git/objects
폴더에 내부적으로 관리됨
📌 예제:
git commit -m "Add hello.txt file"
git status # 상태 확인
출력 예시 (커밋 완료)
On branch main nothing to commit, working tree clean
💡 즉, 로컬 저장소는 “내 컴퓨터에 저장되는 Git의 버전 관리 공간”!
🛠 4️⃣ 원격 저장소 (Remote Repository)
📌 역할:
git push
명령을 실행하면 원격 저장소(GitHub, GitLab, Bitbucket 등)로 업로드됨- 협업을 위해 여러 개발자들과 코드 공유 가능
git clone
또는git pull
로 원격 저장소에서 코드를 가져올 수 있음
📌 특징:
✅ 원격 서버(GitHub, GitLab 등)에 저장됨
✅ git push
명령을 실행해야 반영됨
✅ 협업을 위한 브랜치 관리 가능
📌 예제:
git push origin main # 원격 저장소로 코드 업로드
출력 예시 (원격 저장소에 업로드 완료)
To github.com:user/repo.git * [new branch] main -> main
💡 즉, 원격 저장소는 “GitHub 등의 서버에서 공유되는 코드 저장 공간”!
🔍 Git에서 코드가 저장되는 흐름
[ 작업 디렉토리 ] --(git add)--> [ 스테이징 영역 ] --(git commit)--> [ 로컬 저장소 ] --(git push)--> [ 원격 저장소 ]
| 상태 | 명령어 | 설명 |
|——|——–|——|
| 작업 디렉토리 (Working Directory) | git status
| 파일을 생성하거나 수정한 상태 |
| 스테이징 영역 (Staging Area) | git add
| 변경된 파일을 커밋할 준비 완료 |
| 로컬 저장소 (Local Repository) | git commit
| 변경 사항이 기록되어 버전 관리됨 |
| 원격 저장소 (Remote Repository) | git push
| 원격 서버(GitHub 등)에 업로드됨 |
📌 정리
Git의 주요 저장 공간
| 영역 | 역할 | 관련 명령어 |
|———|——–|—————-|
| 작업 디렉토리 (Working Directory) | 파일을 생성하고 수정하는 공간 | git status
, git diff
|
| 스테이징 영역 (Staging Area, Index) | git add
를 실행하면 커밋할 준비 상태 | git add
, git restore --staged
|
| 로컬 저장소 (Local Repository) | git commit
하면 영구 저장됨 | git commit
, git log
|
| 원격 저장소 (Remote Repository) | git push
하면 서버(GitHub 등)에 업로드 | git push
, git pull
, git clone
|
💡 마무리
git add
하면 변경 사항이 “스테이징 영역”에 저장됨git commit
하면 변경 사항이 “로컬 저장소”에 영구 저장됨git push
하면 원격 저장소(GitHub 등)에 업로드됨- Git은 “변경 사항(스냅샷)”만 저장하므로 효율적인 버전 관리가 가능함
댓글남기기