git clone: 원격 저장소 복제하기

git clone의 동작 원리, HTTPS vs SSH, 디렉토리 지정, 얕은 클론 등 실무에서 쓰는 옵션을 정리한다.

· 4 min read · PALDYN Team

지난 글에서 로컬에서 새 저장소를 만드는 방법을 살펴봤다. 실제 개발에서는 기존에 존재하는 원격 저장소를 로컬로 가져오는 경우가 더 많다. git clone이 그 역할을 한다.

clone은 단순 다운로드가 아니다

git clone URL은 파일만 내려받는 게 아니다. 원격 저장소의 모든 것을 복제한다.

  • 전체 커밋 이력 (첫 번째 커밋부터 현재까지)
  • 모든 브랜치 정보
  • 모든 태그
  • origin 원격 설정 (push/fetch할 주소가 자동 설정)

클론이 완료되면 인터넷 없이도 전체 이력 탐색, 브랜치 전환, 커밋 비교가 가능하다.

git clone이 하는 일

기본 사용법

# GitHub 저장소 클론
git clone https://github.com/user/repo.git

# 클론 완료 후 자동으로 생성된 것들
cd repo
git remote -v
# origin  https://github.com/user/repo.git (fetch)
# origin  https://github.com/user/repo.git (push)

git branch -a
# * main
#   remotes/origin/HEAD -> origin/main
#   remotes/origin/main
#   remotes/origin/develop

HTTPS vs SSH

원격 저장소에 접근하는 두 가지 방식이 있다.

HTTPS: 별도 설정 없이 즉시 사용 가능하다. 처음 push/pull 시 GitHub 계정 자격증명(토큰)을 요구한다. git-credential-helper를 설정하면 이후에는 자동 인증된다.

SSH: SSH 키를 GitHub 계정에 등록해두면 비밀번호 없이 인증된다. 개발자 환경에서 더 편리하다.

# HTTPS
git clone https://github.com/user/repo.git

# SSH (키 설정 완료 후)
git clone git@github.com:user/repo.git

주요 옵션

git clone 주요 옵션

디렉토리 이름 지정: 기본적으로 저장소 이름 그대로 디렉토리가 생성된다. 다른 이름을 쓰고 싶다면 URL 뒤에 지정한다.

git clone https://github.com/user/long-project-name.git app
# ./app/ 디렉토리에 클론됨

특정 브랜치 체크아웃: 기본적으로 기본 브랜치(보통 main)가 체크아웃된다. 다른 브랜치를 원한다면 -b를 사용한다.

git clone -b develop https://github.com/user/repo.git

얕은 클론(Shallow Clone): CI/CD 파이프라인처럼 최신 상태만 필요하고 이력은 불필요한 경우, --depth로 가져올 커밋 수를 제한한다.

git clone --depth 1 https://github.com/user/repo.git
# 최신 커밋 하나만 받음 — 클론 속도 대폭 감소

수백 MB의 이력이 있는 대형 저장소에서 CI 빌드 시간을 수십 초 단축할 수 있다. 단, 이력 탐색이 필요한 작업(git log, git blame 등)은 제한된다.

서브모듈 포함: 저장소 안에 다른 Git 저장소가 서브모듈로 포함된 경우, 자동으로 초기화하려면 --recurse-submodules를 사용한다.

git clone --recurse-submodules https://github.com/user/repo.git

클론 후 확인

cd repo

# 현재 브랜치와 상태
git status
# On branch main
# Your branch is up to date with 'origin/main'.
# nothing to commit, working tree clean

# 원격 설정 확인
git remote -v

# 전체 이력 확인
git log --oneline -5

# 로컬에서 사용 가능한 모든 브랜치
git branch -a

로컬 저장소 클론

원격뿐 아니라 로컬 디렉토리도 클론할 수 있다.

git clone /path/to/local/repo new-copy
# 로컬 경로도 동일하게 동작

테스트 환경 구성이나 저장소 백업에 유용하다.


지난 글: git init: 새 저장소 초기화

다음 글: Git의 세 가지 트리


읽어주셔서 감사합니다. 😊