.git 디렉토리 설명

John Wachira 2022년8월23일
.git 디렉토리 설명

이 기사에서는 Git 폴더 .git을 소개합니다. Git이 폴더를 생성하는 이유와 폴더에 포함된 내용을 다룰 것입니다.

Git의 .git 폴더란?

Git은 널리 사용되는 버전 관리 시스템입니다. Git 리포지토리는 프로젝트에서 변경한 사항을 저장합니다.

.git 디렉토리는 모든 데이터를 저장소에 저장합니다. 이 폴더는 저장소의 이메일 주소에 대한 커밋 정보를 저장할 수 있습니다.

커밋 기록이 포함된 로그도 찾을 수 있습니다. 이 로그를 사용하여 원하는 코드 버전을 복원할 수 있습니다.

빈 저장소를 초기화하기 위해 git init 명령을 실행하면 Git이 .git 폴더를 생성합니다.

아래 명령을 실행하여 폴더를 볼 수 있습니다.

ls -C .git

아래와 같은 출력을 기대할 수 있습니다.

$ ls -C .git
COMMIT_EDITMSG  HEAD       config       hooks/  info/  objects/     refs/
FETCH_HEAD      ORIG_HEAD  description  index   logs/  packed-refs

이 디렉토리의 내용을 더 자세히 살펴보겠습니다.

  1. hooks/ - hooks 폴더는 스크립트 파일을 저장합니다. Git은 pushcommit과 같은 명령을 실행할 때 이러한 스크립트 파일을 실행합니다.
  2. objects/ - 이 폴더에는 Git의 개체 데이터베이스가 들어 있습니다.
  3. config - Git의 구성 파일입니다.
  4. refs/ - 이 폴더에는 분기 및 태그에 대한 데이터가 들어 있습니다.
  5. HEAD - 이 파일은 마스터 브랜치에 대한 정보를 저장합니다.
  6. index - 이 바이너리 파일에는 스테이징 데이터가 포함되어 있습니다.

아래 명령을 실행하여 개체 데이터베이스에 포함된 내용을 확인할 수 있습니다.

ls -C .git/objects

아래와 같은 출력이 나와야 합니다.

$ ls -C .git/objects
03/  24/  30/  77/  87/  ac/  b6/  c6/  e1/  ec/  info/
19/  29/  4b/  78/  8b/  b1/  c3/  d4/  e6/  f6/  pack/
1f/  2d/  67/  7b/  a6/  b2/  c4/  dd/  e9/  fa/

ls -C .git/objects/<dir> 명령을 사용하여 데이터베이스의 개체를 조회할 수 있습니다.

config 파일을 살펴보겠습니다. 아래와 같이 cat .git/config 명령을 실행합니다.

pc@JOHN MINGW64 ~/Git (main)
$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[gui]
        wmstate = normal
        geometry = 893x435+208+208 175 196
[remote "origin"]
        url = https://github.com/Wachira11ke/Delftscopetech.git
        fetch = +refs/heads/*:refs/remotes/origin/*

HEAD 파일은 기본적으로 마스터 분기를 참조합니다.

.git 폴더는 손상을 방지하기 위해 항상 숨겨져 있습니다. 파일을 삭제하면 리포지토리에서 변경 사항을 복원할 수 없습니다.

작가: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

관련 문장 - Git Directory