[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/
git init
명령 후 정해진 디렉토리(/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
HEAD
는 현재 Checkout 한 브랜치를 가리키는 포인터이다.
git cat-file -p HEAD
HEAD
가 가리키는 스냅샷(커밋)을 확인하기 위해서는 아래의 명령어를 사용한다.
git cat-file -p HEAD
결과의 예)tree fcff743c6f109858f698c9bdc7358abb993c528d parent ea4ae7d07220582431607e4c4f7182f22ff84dd1 author 8luebottle <yourEmail@gmail.com> 1620748709 +0900 committer 8luebottle <yourEmail@gmail.com> 1620748709 +0900 05.12.2021 : PHP [ADD] - functions - define - end - explode - isset - strpos
- tree, parent, author, committer, title, 그리고 description 을 확인 할 수 있다.
from GitHub
cat-file
과 같은 저수준의 명령을 plumbing
명령이라고 한다.
config
해당 프로젝트에만 적용되는 설정 옵션.
- 개별 옵션이 지정 되어 있지 않을 시
git config --global
의 옵션들이 적용된다. -
개별 옵션이 지정 되어 있을 시
git은 앞선 global 옵션(.gitconfig
)을 덮어씌운 채 동작하게 된다.[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = https://github.com/userName/repositoryName.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "develop"] remote = origin merge = refs/heads/develop [branch "master"] remote = origin merge = refs/heads/master [gitflow "branch"] master = master develop = develop [gitflow "prefix"] feature = feature/ bugfix = bugfix/ release = release/ hotfix = hotfix/ support = support/ versiontag = [gitflow "path"] hooks = /paht/to/directory/github.com/userName/directoryName/.git/hooks [gitflow "branch.hotfix/grammar_mistake"] base = master [gitflow "branch.feature/add_file_list_api"] base = develop [branch "refactor_list_service"] remote = origin merge = refs/heads/refactor_list_service [branch "add_ext_list"] remote = origin merge = refs/heads/add_ext_list
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