git의 소스관리.md
· 2.5 KiB · Markdown
原始檔案
깃 클론(`git clone`)을 하면 서버 저장소가 그대로 복제되어 로컬에 **작업 가능한 레포지토리 폴더**가 생깁니다. 구조는 다음과 같습니다:
```
project-name/ ← 클론된 프로젝트 루트 디렉터리
├─ .git/ ← 깃 내부 데이터 저장소 (원격과 동기화, 브랜치, 커밋 내역 등)
├─ README.md ← 서버 저장소에 있던 일반 파일들
├─ src/ ← 서버 저장소에 있던 소스 코드 디렉터리
├─ package.json ← 예시: Node.js 프로젝트라면 포함될 수 있는 파일
└─ ... ← 서버 저장소에 있던 나머지 파일들
```
핵심 포인트:
* **`.git/` 폴더**: 모든 커밋 히스토리, 브랜치 정보, 원격 연결 정보가 들어 있음. (실제 레포지토리 핵심)
* **나머지 파일들**: 서버에 올라간 최신 스냅샷(HEAD 브랜치의 워킹 디렉터리)이 그대로 복제됨.
* 따라서 로컬에는 **(1) 깃 관리용 숨김 폴더 + (2) 실제 작업 파일들** 두 층이 공존.
정리하면, `git clone` → 내 로컬에 **하나의 프로젝트 폴더**가 생기고, 그 안에 `.git`과 서버 저장소의 파일들이 들어오는 구조입니다.
---
로컬에서 `git clone` 한 시점 이후 소스와 메타데이터는 모두 **클론된 레포지토리 폴더 안**에만 존재합니다.
깃은 별도의 전역 디렉터리에 소스 사본을 두지 않습니다. 구조를 나눠보면:
1. **작업 파일(Working Directory)**
* 레포지토리 루트 아래 일반 파일들 (`src/`, `README.md`, 등).
* 사용자가 수정·빌드·실행하는 실제 코드.
2. **깃 데이터베이스(.git/ 디렉터리)**
* 커밋 객체, 블롭(blob), 트리(tree), 태그, 브랜치, 원격 정보.
* 깃의 "메타데이터" 전부가 여기에 들어 있음.
* `.git/objects/` 에는 실제 소스 파일 내용(스냅샷)이 압축 저장됨.
* `.git/refs/` 는 브랜치/태그 포인터.
* `.git/config` 는 원격 URL, 사용자 환경 설정.
3. **글로벌 설정(필요할 때만)**
* 사용자 홈 디렉터리(`~/.gitconfig`) → 사용자명/이메일/에디터 같은 글로벌 환경설정.
* 하지만 여기에는 **개별 레포지토리의 소스나 커밋 히스토리**는 전혀 들어가지 않음.
즉, 깃은 SVN처럼 **별도의 중앙 작업공간이나 숨은 캐시폴더를 두지 않습니다.**
로컬에 생기는 건 딱:
* 레포지토리 폴더 (코드 + `.git`)
* 전역 설정 파일(`~/.gitconfig`)
깃 클론(git clone)을 하면 서버 저장소가 그대로 복제되어 로컬에 작업 가능한 레포지토리 폴더가 생깁니다. 구조는 다음과 같습니다:
project-name/ ← 클론된 프로젝트 루트 디렉터리
├─ .git/ ← 깃 내부 데이터 저장소 (원격과 동기화, 브랜치, 커밋 내역 등)
├─ README.md ← 서버 저장소에 있던 일반 파일들
├─ src/ ← 서버 저장소에 있던 소스 코드 디렉터리
├─ package.json ← 예시: Node.js 프로젝트라면 포함될 수 있는 파일
└─ ... ← 서버 저장소에 있던 나머지 파일들
핵심 포인트:
.git/폴더: 모든 커밋 히스토리, 브랜치 정보, 원격 연결 정보가 들어 있음. (실제 레포지토리 핵심)- 나머지 파일들: 서버에 올라간 최신 스냅샷(HEAD 브랜치의 워킹 디렉터리)이 그대로 복제됨.
- 따라서 로컬에는 (1) 깃 관리용 숨김 폴더 + (2) 실제 작업 파일들 두 층이 공존.
정리하면, git clone → 내 로컬에 하나의 프로젝트 폴더가 생기고, 그 안에 .git과 서버 저장소의 파일들이 들어오는 구조입니다.
로컬에서 git clone 한 시점 이후 소스와 메타데이터는 모두 클론된 레포지토리 폴더 안에만 존재합니다.
깃은 별도의 전역 디렉터리에 소스 사본을 두지 않습니다. 구조를 나눠보면:
-
작업 파일(Working Directory)
- 레포지토리 루트 아래 일반 파일들 (
src/,README.md, 등). - 사용자가 수정·빌드·실행하는 실제 코드.
- 레포지토리 루트 아래 일반 파일들 (
-
깃 데이터베이스(.git/ 디렉터리)
- 커밋 객체, 블롭(blob), 트리(tree), 태그, 브랜치, 원격 정보.
- 깃의 "메타데이터" 전부가 여기에 들어 있음.
.git/objects/에는 실제 소스 파일 내용(스냅샷)이 압축 저장됨..git/refs/는 브랜치/태그 포인터..git/config는 원격 URL, 사용자 환경 설정.
-
글로벌 설정(필요할 때만)
- 사용자 홈 디렉터리(
~/.gitconfig) → 사용자명/이메일/에디터 같은 글로벌 환경설정. - 하지만 여기에는 개별 레포지토리의 소스나 커밋 히스토리는 전혀 들어가지 않음.
- 사용자 홈 디렉터리(
즉, 깃은 SVN처럼 별도의 중앙 작업공간이나 숨은 캐시폴더를 두지 않습니다. 로컬에 생기는 건 딱:
- 레포지토리 폴더 (코드 +
.git) - 전역 설정 파일(
~/.gitconfig)