git init으로 로컬 저장소를 만드는 방법과 git clone으로 원격 저장소를 복제하는 방법을 배운다. .git 디렉토리의 내부 구조를 이해하고 HTTPS/SSH URL의 차이를 파악한다.
저장소(Repository)란
Git 저장소는 프로젝트의 모든 파일과 변경 이력이 담긴 공간입니다. 크게 두 종류가 있습니다.
- 로컬 저장소: 내 컴퓨터에 있는 저장소 (
.git폴더가 있는 디렉토리) - 원격 저장소(Remote): GitHub, GitLab 같은 서버에 있는 저장소
git init — 새 저장소 만들기
# 1. 새 폴더를 만들고 그 안에서 초기화
mkdir my-project
cd my-project
git init
# 출력:
# Initialized empty Git repository in /path/to/my-project/.git/
# 2. 기존 폴더를 저장소로 만들기
cd existing-project
git init
# 3. 폴더 생성과 동시에 초기화
git init my-project
cd my-project
git init을 실행하면 현재 디렉토리에 .git 폴더가 생성됩니다. 이 폴더가 저장소의 실체입니다.
.git 디렉토리 내부 구조
.git/
├── HEAD # 현재 체크아웃된 브랜치 포인터
├── config # 저장소 로컬 설정
├── description # (GitWeb용, 일반적으로 무시)
├── hooks/ # 이벤트 훅 스크립트
├── index # Staging Area (다음 커밋 내용)
├── objects/ # 모든 데이터 (커밋, 파일 내용)
│ ├── info/
│ └── pack/
└── refs/
├── heads/ # 로컬 브랜치 포인터
└── tags/ # 태그 포인터
# HEAD 파일 내용 예시
cat .git/HEAD
# ref: refs/heads/main
절대 .git 폴더를 직접 삭제하거나 수정하지 마세요. .git을 삭제하면 전체 커밋 이력이 사라집니다. 저장소 추적을 해제하고 싶다면 rm -rf .git으로 삭제할 수는 있지만 이는 복구 불가능한 작업입니다.
git clone — 원격 저장소 복제
GitHub 등 원격 저장소를 로컬로 가져올 때 사용합니다. 단순한 다운로드가 아니라 전체 이력과 원격 연결 정보까지 복제합니다.
# HTTPS 방식
git clone https://github.com/username/repo-name.git
# SSH 방식 (SSH 키 설정이 되어 있어야 함)
git clone git@github.com:username/repo-name.git
# 폴더 이름 지정
git clone https://github.com/username/repo.git my-folder
# 특정 브랜치만 클론
git clone -b develop https://github.com/username/repo.git
# 얕은 클론 (최근 N개 커밋만, 대형 저장소에 유용)
git clone --depth 1 https://github.com/username/repo.git
HTTPS vs SSH — 언제 무엇을 쓰나
| 항목 | HTTPS | SSH |
|---|---|---|
| 인증 | ID + PAT 토큰 | SSH 키 쌍 |
| 설정 난이도 | 쉬움 | 초기 설정 필요 |
| 방화벽 | 대부분 허용 (443 포트) | 22 포트 막힐 수 있음 |
| 편의성 | credential 저장 후 무관 | passphrase 없으면 비밀번호 불필요 |
| 추천 | 입문자, 일회성 클론 | 매일 작업하는 개인 저장소 |
클론 후 디렉토리 구조 확인
git clone https://github.com/user/project.git
cd project
# 원격 저장소 연결 확인
git remote -v
# origin https://github.com/user/project.git (fetch)
# origin https://github.com/user/project.git (push)
# 브랜치 확인
git branch # 로컬 브랜치
git branch -r # 원격 브랜치
git branch -a # 전체 브랜치
원격 저장소 직접 연결하기
git init으로 만든 로컬 저장소를 나중에 GitHub에 연결할 때 사용합니다.
# GitHub에서 새 저장소 생성 후 URL 복사
# 원격 저장소 추가
git remote add origin https://github.com/username/repo.git
# 확인
git remote -v
# 원격 주소 변경 (HTTPS → SSH 등)
git remote set-url origin git@github.com:username/repo.git
# 원격 저장소 제거
git remote remove origin
실전 워크플로우 — 처음 시작하는 두 가지 방법
방법 1: 로컬에서 시작 → GitHub에 올리기
git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/user/repo.git
git push -u origin main
방법 2: GitHub에서 시작 → 로컬로 클론
# GitHub에서 New repository 생성 (README 포함 체크)
git clone https://github.com/user/repo.git
cd repo
# 바로 작업 시작
관련 검색어 · git init 사용법, git clone 명령어, .git 폴더 구조, HTTPS SSH 차이, git remote add, 저장소 만들기