最後活躍 1757318099

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)