git init으로 로컬 저장소 생성, .git 디렉터리 내부 구조, Git의 3가지 영역(작업 디렉터리·스테이징·저장소) 개념, git clone으로 원격 저장소 복사까지 저장소의 모든 것을 완전히 이해합니다.
🎯 학습 목표
이 강을 마치면 다음을 할 수 있습니다.
git init으로 새 로컬 저장소를 만들 수 있습니다.- Git의 3가지 핵심 영역(작업 디렉터리, 스테이징 영역, 저장소)을 이해하고 설명할 수 있습니다.
.git디렉터리가 무엇이고 왜 건드리면 안 되는지 이해합니다.git clone으로 원격 저장소를 로컬에 복사할 수 있습니다.
🏗️ Git의 3가지 영역 — 핵심 개념
이 섹션에서는 Git이 파일을 관리하는 세 가지 공간의 개념과 파일이 이 공간들 사이에서 어떻게 이동하는지 살펴보겠습니다.
Git을 처음 배울 때 가장 중요한 개념이 있습니다. Git은 파일을 한 곳에서 관리하지 않고 세 개의 영역으로 나눠 관리합니다. 이 개념을 이해하면 이후 배울 add, commit, push 명령어가 무엇을 하는지 훨씬 명확해집니다.
① 작업 디렉터리(Working Directory): 여러분이 실제로 파일을 편집하는 일반 폴더입니다. 코드를 작성하고, 파일을 생성하고, 내용을 수정하는 곳입니다. 여기서의 변경 사항은 아직 Git에 기록되지 않은 상태입니다.
② 스테이징 영역(Staging Area): 커밋할 파일들을 미리 모아두는 임시 공간입니다. "다음 커밋에 포함할 변경 사항"을 선별해서 담아두는 바구니라고 생각하면 됩니다. git add 명령이 파일을 이 영역으로 보냅니다. 인덱스(Index)라고도 부릅니다.
③ 저장소(Repository): 커밋된 스냅샷들이 영구적으로 저장되는 Git 데이터베이스입니다. .git 폴더 안에 있습니다. git commit 명령이 스테이징 영역의 내용을 이곳에 스냅샷으로 저장합니다.
| 영역 | 명령어 | 상태 | 비유 |
|---|---|---|---|
| 작업 디렉터리 | 파일 편집 (Git 명령 아님) | 수정 중 (Modified) | 작업실에서 물건 만들기 |
| 스테이징 영역 | git add | 스테이지됨 (Staged) | 포장 박스에 담기 |
| 저장소 | git commit | 커밋됨 (Committed) | 창고에 영구 보관 |
왜 스테이징 영역이 필요할까요? 한 번에 여러 파일을 수정했더라도 커밋은 논리적으로 관련 있는 변경 사항만 묶어서 만드는 것이 좋은 습관입니다. 예를 들어 기능 A와 버그 수정 B를 동시에 했다면, A 관련 파일만 add해서 커밋하고, 이후 B 관련 파일을 add해서 별도로 커밋할 수 있습니다. 스테이징 영역이 이 선택을 가능하게 합니다.
🚀 git init — 새 저장소 만들기
이 섹션에서는 git init 명령어로 새 프로젝트를 Git 저장소로 초기화하는 방법을 살펴보겠습니다.
git init은 일반 폴더를 Git이 추적하는 저장소로 변환합니다. 이 명령어 하나로 해당 폴더의 모든 변경 사항을 Git으로 관리할 수 있게 됩니다.
# 1. 새 프로젝트 폴더 만들기
mkdir my-first-project
# 2. 폴더 안으로 이동
cd my-first-project
# 3. Git 저장소 초기화
git init
# 출력 예시:
# Initialized empty Git repository in /Users/username/my-first-project/.git/
이미 파일이 있는 기존 폴더에서 실행해도 됩니다. 기존 파일들은 삭제되거나 변경되지 않습니다.
# 기존 폴더에서 Git 초기화
cd 기존프로젝트폴더
git init
# Initialized empty Git repository in /path/to/기존프로젝트폴더/.git/
git init을 실행하면 해당 폴더 안에 .git이라는 숨김 폴더가 생성됩니다. 점(.)으로 시작하는 폴더는 운영체제에서 기본적으로 숨겨서 표시합니다. 이 폴더가 Git 저장소의 핵심입니다.
# 숨김 파일·폴더 포함해서 목록 보기
ls -la # macOS·Linux·Git Bash
# .git 폴더가 보이면 저장소 초기화 성공
# drwxr-xr-x .git
🔍 .git 디렉터리 내부 — Git의 데이터베이스
이 섹션에서는 .git 폴더 안에 무엇이 있는지, 왜 이 폴더를 수동으로 건드리면 안 되는지 살펴보겠습니다.
.git 폴더는 Git이 모든 버전 정보를 저장하는 데이터베이스입니다. 이 폴더만 있으면 전체 프로젝트 히스토리를 복구할 수 있습니다. 내부 구조를 간략히 살펴보겠습니다.
# .git 폴더 내부 구조 확인
ls -la .git
# 주요 구성 요소:
# HEAD - 현재 체크아웃된 브랜치 또는 커밋을 가리키는 포인터
# config - 저장소별 Git 설정 파일
# objects/ - 모든 커밋, 파일 내용이 저장되는 폴더 (핵심 데이터베이스)
# refs/ - 브랜치와 태그 참조 정보
# index - 스테이징 영역(인덱스)의 현재 상태
절대로 .git 폴더 내부를 수동으로 편집하지 마세요. Git 명령어를 통해서만 수정해야 합니다. 잘못 건드리면 저장소가 손상돼 복구가 어렵거나 불가능해질 수 있습니다. 반대로 .git 폴더를 삭제하면 해당 프로젝트의 모든 Git 히스토리가 사라지고 일반 폴더가 됩니다.
Git 저장소 삭제가 필요하다면(즉, Git 추적을 중단하고 싶다면) 다음과 같이 합니다.
# Git 저장소를 일반 폴더로 되돌리기 (히스토리 모두 삭제됨, 신중하게!)
rm -rf .git # macOS·Linux·Git Bash
📋 git clone — 원격 저장소 복사하기
이 섹션에서는 GitHub 등에 있는 원격 저장소를 내 컴퓨터로 가져오는 git clone을 살펴보겠습니다.
git clone은 원격 저장소(GitHub 등)의 전체 내용을 내 컴퓨터에 복사합니다. 단순 파일 다운로드가 아니라 전체 Git 히스토리와 브랜치 정보를 포함한 완전한 복사입니다. 오픈소스 프로젝트에 기여하거나, 팀원의 저장소로 합류할 때 사용합니다.
# 기본 사용법
git clone <저장소 URL>
# 예시: GitHub의 공개 저장소 클론
git clone https://github.com/facebook/react.git
# 현재 폴더 안에 react 폴더가 생성되고 내부에 모든 파일과 .git이 존재
# 폴더 이름 지정해서 클론
git clone https://github.com/facebook/react.git my-react-copy
# react 대신 my-react-copy라는 이름으로 폴더 생성
클론이 완료되면 자동으로 origin이라는 이름으로 원격 저장소 주소가 등록됩니다. 이후 git push origin, git pull origin처럼 원격 저장소와 동기화할 때 이 이름을 사용합니다. 이 개념은 10강과 11강에서 자세히 다룹니다.
# 클론 후 원격 저장소 정보 확인
cd my-first-project
git remote -v
# origin https://github.com/username/repo.git (fetch)
# origin https://github.com/username/repo.git (push)
📂 좋은 저장소 구조 — 프로젝트 시작 전 알아두기
이 섹션에서는 Git 저장소를 만들 때 좋은 위치 선택과 기본 구조에 대한 가이드를 살펴보겠습니다.
Git 저장소를 처음 만들 때 몇 가지 주의할 점이 있습니다.
저장소 안에 저장소 금지: 폴더 A에 이미 .git이 있는데 그 안의 폴더 B에서 또 git init을 실행하면 중첩 저장소가 생깁니다. 이는 복잡한 문제를 야기하므로 피해야 합니다. 새 저장소는 항상 Git이 추적하지 않는 일반 폴더에서 시작하세요.
홈 디렉터리에서 git init 금지: 실수로 홈 디렉터리(~)에서 git init을 실행하면 홈 폴더 전체가 Git 저장소가 됩니다. 항상 프로젝트별 전용 폴더를 만들고 그 안에서 초기화하세요.
일반적인 프로젝트 초기화 순서:
# 권장하는 새 프로젝트 시작 방법
mkdir ~/projects/my-app # 프로젝트 전용 폴더 생성
cd ~/projects/my-app # 폴더 이동
git init # Git 초기화
# 이제 파일 만들고 작업 시작
📝 핵심 요약
3강에서 배운 내용을 정리해 보겠습니다.
# 오늘 배운 핵심 명령어
# 새 저장소 초기화
git init
# 원격 저장소 복사
git clone <URL>
# 원격 저장소 정보 확인
git remote -v
# 숨김 폴더 포함 목록 보기 (.git 확인용)
ls -la
| 개념 | 설명 |
|---|---|
| 작업 디렉터리 | 실제 파일 편집 공간 — 변경 사항이 아직 Git에 없음 |
| 스테이징 영역 | 다음 커밋에 포함할 파일을 선별하는 임시 공간 |
| 저장소 (.git) | 커밋된 스냅샷이 영구 저장되는 Git 데이터베이스 |
| git init | 일반 폴더를 Git 저장소로 초기화 |
| git clone | 원격 저장소 전체(히스토리 포함)를 로컬에 복사 |
다음 강인 4강 — add와 commit에서는 Git의 가장 핵심적인 작업 사이클을 배웁니다. git add로 파일을 스테이징 영역에 올리고, git commit으로 스냅샷을 저장하는 과정을 처음부터 직접 실습합니다. 첫 번째 커밋을 만드는 순간입니다!
관련 주제
- git init
- 작업 디렉터리
- 스테이징 영역
- 저장소 3영역
- .git 디렉터리
- git clone
- 개발·프로그래밍
- 개발·프로그래밍 강의
- 깃허브 사용법 18강 — Git & GitHub 협업
- 무료강의
- 무료 온라인 강의
- NUGUNA
- 누구나
📚 시리즈 전체 공유
깃허브 사용법 18강 — Git & GitHub 협업
이 강의가 속한 시리즈는 총 7강, 모두 무료입니다. 처음부터 배우려는 동료에게 시리즈 전체를 알려 주세요.
댓글
불러오는 중...
