Skip to content

Latest commit

 

History

History
179 lines (138 loc) · 4.45 KB

.git.md

File metadata and controls

179 lines (138 loc) · 4.45 KB

.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 git cat-file

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

↑ return to TOC