Skip to content

IT의 모든것

개발 하는 사람들에게 도움이 될 만한 정보를 제공합니다.

Menu
Menu

Git Shallow Clone: 기가바이트(GB) 대형 저장소 5초 만에 다운받는 비결

Posted on 2026년 10월 16일2026년 10월 06일 by steve

 

수 기가바이트(GB)에 달하는 방대한 Git 저장소, 내려받는 데 세월을 보내고 계신가요? 최근 커밋만 쏙 골라 받아 수십 분 걸리던 클론 작업을 단 5초 만에 끝내는 Git Shallow Clone(얕은 복제)의 원리와 실전 명령어, 그리고 사후 히스토리 복원 팁까지 친절하게 알려드립니다! 🚀

 

오픈소스 프로젝트를 분석하거나 사내 대규모 프로젝트 코드를 내려받으려고 git clone을 쳤다가 하염없이 멈춘 터미널 화면을 보며 멍때린 경험, 다들 한 번쯤 있으시죠? 저도 처음 리눅스 커널이나 대형 프론트엔드 모노레포를 클론할 때 수 기가바이트의 커밋 히스토리를 전부 받느라 네트워크가 끊겨서 처음부터 다시 받았던 눈물겨운 기억이 있어요. 😂

솔직히 당장 필요한 건 ‘지금 당장 돌아가는 최신 코드’ 한 줄인데, 10년 전 누군가가 커밋했던 커다란 바이너리 파일이나 삭제된 브랜치 로그까지 내 노트북에 전부 다운로드할 필요는 전혀 없잖아요? 오늘은 개발 시간과 하드디스크 용량을 획기적으로 아껴주는 Git Shallow Clone 기술을 쉽고 명쾌하게 정리해 드릴게요!

 

1. Git Shallow Clone이란 무엇일까요? 🤔

기본적으로 일반적인 Git 복제(Full Clone)는 저장소가 처음 만들어진 첫 번째 커밋(Root Commit)부터 현재에 이르는 모든 변경 사항, 파일 히스토리, 브랜치와 태그 정보를 통째로 압축 팩파일(Packfile)로 내려받습니다. 히스토리가 길고 파일이 많은 저장소라면 이 용량이 수백 MB에서 수십 GB까지 훌쩍 불어나곤 해요.

반면에 Shallow Clone(얕은 복제)은 히스토리 깊이(Depth)를 지정하여 지정한 개수만큼의 최신 커밋 스냅샷만 잘라서 가져오는 마법 같은 기능이에요. 과거의 방대한 데이터 조각들을 네트워크로 받아오지 않기 때문에 네트워크 대역폭과 디스크 용량을 어마어마하게 절약할 수 있답니다.

💡 알아두세요!
Shallow Clone으로 생성된 저장소는 겉보기엔 일반 저장소와 완전히 똑같이 빌드되고 실행돼요. 소스 코드를 읽고, 테스트를 돌리고, 새로운 커밋을 생성하는 데 전혀 지장이 없습니다!

 

2. 일반 Clone vs Shallow Clone 상세 비교 📊

두 방식이 내부적으로 어떻게 다른지 한눈에 파악할 수 있도록 비교 테이블을 준비했어요. 특히 단일 브랜치 옵션이나 최신 Git 부분 복제(Partial Clone)와의 차이점도 함께 살펴보시면 좋아요.

방식 구분 가져오는 데이터 범위 네트워크 & 디스크 소모 추천 활용처
Full Clone 모든 브랜치 + 전체 히스토리 매우 큼 (100% 기준) 장기 프로젝트 메인 개발, 오프라인 히스토리 분석
Shallow Clone 지정한 최근 N개 커밋만 포함 매우 작음 (약 5~15% 수준) CI/CD 배포 파이프라인, 단순 코드 열람, 도커 빌드
Single Branch 특정 1개 브랜치의 전체 히스토리 보통 (다른 브랜치 제외) 특정 기능 브랜치 작업, 릴리즈 브랜치 분석
Blobless Clone 모든 커밋 그래프 + 파일 내용은 필요시 호출 작음 (히스토리 그래프 유지) 히스토리 로그는 다 보되 다운로드 속도를 높일 때
⚠️ 주의하세요!
Shallow Clone 저장소는 과거 커밋이 잘려 있기 때문에 git log로 아주 오래전 커밋을 검색하거나, 오래된 커밋을 기준으로 하는 복잡한 리베이스(Rebase)를 수행할 때 기준점을 찾지 못해 오류가 발생할 수 있습니다.

 

3. 핵심 명령어와 실전 사용법 🧮

가장 기본이 되는 핵심 옵션은 바로 --depth <숫자>입니다. 보통 최신 상태만 빠르게 얻고 싶다면 숫자를 1로 주는 것이 일반적이에요.

📝 가장 널리 쓰이는 표준 명령어

git clone –depth 1 <저장소_URL>

이 명령어를 사용하면 원격 저장소의 기본 브랜치(보통 main 또는 master)에서 가장 최신 커밋 딱 1개만 받아옵니다. 여기에 다른 쓸모없는 브랜치들까지 전부 차단하고 싶다면 --single-branch를 곁들여주는 것이 정석적인 조합이에요.

1) 특정 브랜치 최신본만 단일 복제: git clone --depth 1 -b develop --single-branch <URL>

2) 특정 날짜 이후의 커밋만 복제: git clone --shallow-since="2026-01-01" <URL>

3) 특정 태그나 커밋 제외 후 복제: git clone --shallow-exclude=<태그명> <URL>

 

4. Shallow Clone 명령어 생성기 🔢

복제하고 싶은 저장소 주소와 옵션을 넣으면 딱 맞는 최적화 명령어를 바로 만들어주는 인터랙티브 도구입니다. 한 번 클릭해서 생성해보세요!

🔢 맞춤형 Git Clone 명령어 생성기

저장소 URL:

히스토리 깊이 (Depth):

대상 브랜치 (선택):

생성된 터미널 명령어:

 

5. 실전 예시: CI/CD 속도 혁신과 히스토리 복원 👩‍💻👨‍💻

실제 현업 프로젝트에서 Shallow Clone을 도입했을 때 얻을 수 있는 대표적인 성공 시나리오는 바로 CI/CD 자동화 파이프라인의 빌드 시간 단축이에요.

대규모 서비스 모노레포 구축 사례

  • 기존 환경: 전체 커밋 수 15만 개, 저장소 팩파일 크기 4.2GB, 클론 소요 시간 평균 3분 40초
  • 개선 조치: GitHub Actions 빌드 스텝에 fetch-depth: 1 적용

개선 전후 결과 비교

1) 다운로드 데이터 용량: 4.2GB → 180MB (약 95.7% 감축)

2) 러너 초기화 및 클론 시간: 220초 → 8초 (약 96% 속도 단축)

→ 개발팀의 일일 PR 머지 및 배포 대기 시간이 하루 총 40분 이상 절약되었습니다!

📌 꼭 알아둬야 할 복원 마법: –unshallow
Shallow Clone으로 가볍게 작업하다가, 과거 히스토리가 전부 필요해졌다면 폴더를 지우고 다시 클론할 필요가 없어요! 아래 명령어를 실행하면 기존 얕은 저장소가 즉시 온전한 풀 저장소로 복원됩니다:
git fetch --unshallow

 

핵심 요약: 바쁜 개발자를 위한 체크리스트 📝

오늘 배운 Git Shallow Clone의 핵심 규칙을 4가지로 깔끔하게 정리해 드릴게요:

  1. 초고속 복제: git clone --depth 1 <URL>을 통해 네트워크 지연 없이 최신 코드만 순식간에 받습니다.
  2. 불필요 브랜치 차단: --single-branch를 함께 명시해 현재 필요한 브랜치만 타겟팅합니다.
  3. CI/CD 적극 활용: GitHub Actions 등에서는 기본값으로 얕은 복제를 사용하여 빌드 러너 비용과 시간을 아낍니다.
  4. 언제든 복구 가능: 나중에 전체 로그가 필요해지면 git fetch --unshallow 한 줄로 전체 히스토리를 채워 넣을 수 있습니다.
💡

Git Shallow Clone 핵심 카드

⚡ 핵심 장점: 다운로드 속도 90% 이상 단축 및 디스크 절약
🛠️ 실전 명령어: git clone –depth 1 <URL>
🧮 풀 히스토리 복원:

git fetch –unshallow

🎯 추천 환경: CI/CD 러너 빌드, Docker 이미지 생성, 오픈소스 코드 분석

네트워크 대역폭과 시간을 획기적으로 절약하는 최적의 Git 다운로드 전략입니다.

자주 묻는 질문 ❓

Q: Shallow Clone 상태에서 새로운 커밋을 작성하고 푸시(Push)할 수 있나요?
A: 네, 가능합니다! 최신 커밋을 기반으로 로컬에서 새로운 커밋을 추가한 뒤 원격 저장소에 일반적인 git push를 수행하는 데 아무런 지장이 없습니다.

Q: 과거 히스토리가 필요한 경우 다시 저장소를 통째로 삭제하고 받아야 하나요?
A: 전혀 그럴 필요가 없습니다. 터미널에서 git fetch --unshallow 명령어 하나만 실행하면 기존 얕은 저장소가 자동으로 풀 히스토리 저장소로 전환됩니다.

Q: GitHub Actions 같은 CI 환경에서 왜 기본적으로 Shallow Clone을 쓰나요?
A: 빌드 러너 머신은 코드를 빌드하고 테스트만 수행하면 되므로, 10년 치 커밋 기록을 내려받는 시간과 네트워크 비용을 아끼기 위해 actions/checkout에서 기본 depth를 1로 설정합니다.

Q: Depth를 1에서 조금만 더 늘려 최근 20개 커밋까지만 받고 싶을 땐 어떻게 하나요?
A: git fetch --deepen=20 명령어를 사용하면 현재 잘려 있는 히스토리 기준선에서 과거 방향으로 원하는 개수만큼 히스토리만 쏙 추가로 늘릴 수 있습니다.

Q: Blobless Clone(–filter=blob:none)과는 어떤 차이가 있나요?
A: Shallow Clone은 커밋 자체를 잘라내는 반면, Blobless Clone은 커밋 트리 그래프는 전부 유지하되 파일 본문(Blob) 데이터만 필요할 때 온디맨드로 가져오는 최신 부분 복제 기술입니다.

지금까지 용량 큰 깃 저장소를 빛의 속도로 내려받는 Git Shallow Clone 기술의 원리와 실전 팁들을 꼼꼼하게 살펴보았습니다. 평소 대형 프로젝트나 모노레포를 다루며 느린 클론 속도 때문에 답답하셨다면 오늘부터 꼭 --depth 1 옵션을 활용해 쾌적한 개발 환경을 만들어보세요!

혹시 명령어를 적용하면서 궁금한 점이나 의외의 오류를 만나셨다면 편하게 댓글로 남겨주세요~ 친절히 답변해 드릴게요! 😊

최신 글

  • 외부 라이브러리 소스 코드 디버깅법: console.log 없이 F11로 파헤치기
  • JetBrains 라이브 템플릿(Live Templates)으로 코딩 속도 2배 올리는 비법
  • console.log 그만! 브레이크포인트와 조건부 중단점으로 버그 10배 빨리 잡는 법
  • 자바와 C# 프로젝트 빌드 속도 70% 단축하는 필수 설정 꿀팁
  • JetBrains에서 Git 완벽 연동하기: 터미널 없이 끝내는 개발 생산성 가이드

보관함

  • 2026년 10월

카테고리

  • IT

소개 및 문의 · 개인정보처리방침 · 면책조항

©2026 IT의 모든것 | Design: Newspaperly WordPress Theme