Git

Git 저장소 구조 완벽 가이드 🚀 | Git 내부 동작 원리 이해하기

코딩 코디네이터 2025. 3. 17. 18:00
반응형

Git 저장소 구조 완벽 가이드 🚀 | Git 내부 동작 원리 이해하기

Git을 사용하지만, Git 저장소 내부 구조에 대해 제대로 이해하고 계신가요?
Git은 단순한 버전 관리 도구가 아니라, 분산 저장소 시스템으로 강력한 기능을 제공합니다.
이번 가이드에서는 Git 저장소 구조의 핵심 개념을 쉽게 설명하고, 실제 프로젝트에서 활용하는 방법
알려드리겠습니다. 🎯

 

안녕하세요, 여러분! 😊

Git을 사용하다 보면 이런 질문이 떠오를 수 있습니다.

 

"내 코드가 Git 내부에서 어떻게 관리될까?"

"로컬 저장소와 원격 저장소의 차이는?"

"Git은 어떻게 변경 사항을 저장하고 추적할까?"

 

Git을 제대로 사용하려면 Git 저장소 구조를 명확하게 이해하는 것이 중요합니다.

이 글에서는 Git 저장소의 핵심 개념을 실전 예제와 함께 쉽게 설명해 드리겠습니다.

이제 Git을 확실히 이해하고, 버전 관리를 자유롭게 활용해봅시다! 🚀

1. 로컬 저장소와 원격 저장소의 차이 🌍

Git은 분산 버전 관리 시스템(DVCS)으로,

코드를 로컬 저장소(Local Repository)원격 저장소(Remote Repository)에 저장할 수 있습니다.

이 두 저장소를 제대로 이해하는 것이 Git 협업의 핵심입니다.

🔍 로컬 저장소(Local Repository)란?

로컬 저장소는 개발자의 컴퓨터에서 실행되는 Git 저장소입니다.

파일을 생성하고 수정한 후, Git 커밋(commit)을 하면 로컬 저장소에 변경 사항이 기록됩니다.

# 로컬 저장소 초기화
$ git init

# 변경된 파일을 로컬 저장소에 커밋
$ git add .
$ git commit -m "초기 프로젝트 파일 추가"

🌎 원격 저장소(Remote Repository)란?

원격 저장소는 GitHub, GitLab, Bitbucket과 같은 플랫폼에서 Git 저장소를 인터넷을 통해 다른 개발자와 공유할 수 있도록 관리하는 공간입니다.

# 원격 저장소를 추가하고 로컬에서 푸시하기
$ git remote add origin https://github.com/사용자명/저장소명.git
$ git push -u origin main
📌 저장소 유형 💡 특징
로컬 저장소 내 컴퓨터에서만 접근 가능, Git 커밋을 통해 관리
원격 저장소 GitHub, GitLab 등에 저장, 여러 개발자와 협업 가능

 

2. Git 저장소의 디렉터리 구조 📂

Git을 사용하면 프로젝트 폴더 내에서 여러 개의 중요한 디렉터리 및 파일이 생성됩니다.

특히, .git 디렉터리는 Git 저장소의 핵심으로, Git이 모든 버전 정보를 저장하는 공간입니다.

📌 Git 프로젝트 디렉터리 구조

my_project/      # Git 프로젝트 폴더
├── .git/        # Git 저장소 (숨김 폴더)
│   ├── objects/ # Git 객체 저장소
│   ├── refs/    # 브랜치 정보 저장
│   ├── HEAD     # 현재 체크아웃된 브랜치 정보
│   ├── config   # 저장소 설정 파일
├── README.md    # 프로젝트 설명 파일
├── index.html   # 프로젝트 파일
├── script.js    # 자바스크립트 파일

 

위 구조에서 가장 중요한 폴더는 .git 디렉터리입니다.

이 폴더는 Git의 모든 버전 관리 데이터를 저장하며, 실수로 삭제하면 Git 히스토리가 사라질 수 있으므로 주의해야 합니다!

🛠️ 주요 디렉터리 및 파일 설명

📌 디렉터리/파일 💡 역할
.git/ Git 저장소의 핵심 디렉터리 (삭제 금지!)
.git/objects/ 커밋, 블롭(blob), 트리(tree) 객체 저장소
.git/refs/ 브랜치 및 태그 정보 저장
.git/config 저장소 설정 파일 (사용자 정보, 원격 저장소 등)
HEAD 현재 체크아웃된 브랜치를 가리키는 포인터

이제 Git 저장소의 폴더 구조가 어떻게 구성되어 있는지 이해하셨나요?

이제 다음 단계에서 Git이 데이터를 저장하는 방식을 알아보겠습니다! 🚀

 

3. Git이 데이터를 저장하는 방식 (객체 구조) 🔍

Git은 데이터를 단순히 파일 형태로 저장하는 것이 아니라, 객체(Object) 기반 저장 방식을 사용합니다.

이는 Git의 핵심 개념 중 하나로, 파일 변경 이력을 효율적으로 관리하고 저장하는 데 매우 중요한 역할을 합니다.

📌 Git 객체(Object)란?

Git은 저장소 내 모든 데이터를 객체(Object) 형태로 저장합니다. Git에서 가장 중요한 객체는 다음과 같습니다.

  • 블롭(Blob) 객체 – 파일의 내용을 저장하는 객체
  • 트리(Tree) 객체 – 폴더(디렉터리) 정보를 저장하는 객체
  • 커밋(Commit) 객체 – 변경 사항(스냅샷)과 메타데이터를 저장하는 객체

🛠️ Git 객체 확인하기

Git은 모든 데이터를 SHA-1 해시 값을 기반으로 저장합니다.

즉, 각 파일(블롭), 폴더(트리), 커밋은 고유한 해시 값을 가지고 있습니다.

# Git 객체 확인하기
$ git cat-file -t HEAD        # 현재 커밋의 객체 유형 확인
$ git cat-file -p HEAD        # 커밋 객체 내용 확인
$ git cat-file -p <SHA1값>    # 특정 객체 내용 확인

🚀 Git 객체의 관계 이해하기

Git은 각 객체를 연결하여 버전 이력을 관리합니다.

아래 그림과 같은 구조를 가지며, 각 커밋은 이전 커밋을 가리키는 방식으로 저장됩니다.

Commit 객체
├── Tree 객체 (디렉터리 정보)
│   ├── Blob 객체 (파일 내용)
│   ├── Blob 객체 (파일 내용)
│   ├── Tree 객체 (하위 디렉터리)
└── Parent Commit (이전 커밋)

 

즉, Git은 전체 파일을 저장하는 것이 아니라, 변경된 내용만 저장하여 저장 공간을 절약하고 성능을 높입니다.

📌 Git 저장 방식 정리

📌 Git 객체 💡 역할
Blob (블롭) 파일의 실제 내용을 저장
Tree (트리) 디렉터리 및 파일 정보를 저장
Commit (커밋) 변경 이력 및 부모 커밋 정보 저장

이제 Git의 저장 방식과 객체 구조를 확실하게 이해하셨을 것입니다! 🚀

 

🔚 마무리: Git 저장소 구조 완벽 이해 🚀

이제 Git 저장소 구조에 대해 명확히 이해하셨나요?

Git이 단순한 버전 관리 도구가 아니라, 강력한 객체 저장 방식과 분산 시스템을 기반으로 동작한다는 점을 알게 되셨을 것입니다.

 

✔️ 로컬 저장소와 원격 저장소 – Git은 로컬과 원격 저장소를 분리하여 협업을 쉽게 합니다.

✔️ Git 디렉터리 구조 – .git 폴더 내부에는 Git의 모든 변경 이력이 저장됩니다.

✔️ Git의 데이터 저장 방식 – Git은 블롭(Blob), 트리(Tree), 커밋(Commit) 객체를 활용하여 파일을 관리합니다.

🚀 Git을 더 잘 활용하는 방법

  • Git 내부 구조를 더 깊이 공부하기 – git cat-file, git ls-tree 등의 명령어를 실습해 보세요.
  • GitHub 및 원격 저장소 활용하기 – git push, git pull을 자주 사용하여 협업 경험을 쌓아보세요.
  • Git Branch와 Merge 연습하기 – Git의 브랜치를 활용하면 더욱 효과적인 버전 관리를 할 수 있습니다.

 

Git은 배우면 배울수록 강력한 기능을 제공하는 도구입니다.

Git을 활용하여 프로젝트를 더욱 체계적으로 관리해 보세요! 🚀

반응형