[Git] .git

.git

git의 저장소를 초기화 할때 생성되는 .git 디렉토리에 대해 알아보자.

Table of Contents

About

정해진 디렉토리에 git init 명령을 치면 새로운 깃 저장소(Repository)로 지정되면서 .git 디렉토리가 생성된다.

git init

Initialized empty Git repository in /path/to/my/dir/.git/

Directory Structure

.git 에는 다양한 디렉토리 및 파일들이 생성된다.

아무런 작업이 이루어지지 않은 .git 의 디렉토리 구조는 아래와 같다.

HEAD    config    description    hooks    info    objects

그 외:

COMMIT_EDITMSG    refs    FETCH_HEAD    ORIG_HEAD    index     logs    packed-refs

HEAD 는 현재 Checkout 한 브랜치를 가리키는 포인터이다.

git cat-file -p HEAD
HEAD 가 가리키는 스냅샷(커밋)을 확인하기 위해서는 아래의 명령어를 사용한다.

cat-file과 같은 저수준의 명령을 plumbing 명령이라고 한다.

config

해당 프로젝트에만 적용되는 설정 옵션.

description

GitWeb 프로그램에서만 사용된다.

hooks

훅은 클라이언트 훅서버 훅으로 나뉜다.

hooks
├── applypatch-msg.sample
├── commit-msg.sample
├── fsmonitor-watchman.sample
├── post-update.sample
├── pre-applypatch.sample
├── pre-commit.sample
├── pre-push.sample
├── pre-rebase.sample
├── pre-receive.sample
├── prepare-commit-msg.sample
└── update.sample

index

Staging Area 에 속해있는 정보들이 저장되어 있다.

info

무시할 파일의 패턴이 담겨 있는 곳.

objects

모든 컨텐츠가 저장되어 있는 데이터 베이스.

refs

References : 커밋 객체의 포인터로써 브랜치, 태그, 리모트와 같은 데이터가 저장되어 있다.

refs
├── heads
│   └── master
├── remotes
│   └── origin
│       ├── HEAD
│       └── master
├── stash
└── tags

↑ return to TOC