Последняя активность 1757318099

Версия eae5ae37a8dccbd14e7c3ff27f2343db3935d072

git의 소스관리.md Исходник

깃 클론(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)

끝입니다.

👉 질문 의도가 “혹시 윈도우 AppData 같은데 따로 소스를 캐시한다거나 메타데이터 DB를 둔 게 있냐?”라면, 없습니다. 전부 .git/ 내부에만 저장됩니다.

원하시면 제가 .git/ 내부 구조를 세부적으로 트리 형태로 풀어서 보여드릴까요?