본문 바로가기
git

[Git] Git 저장소에서 특정 하위 폴더만 클론하는 방법 (여러 폴더 선택 포함)

by clolee 2025. 4. 10.

✅ Git 저장소에서 특정 폴더만 클론하는 방법 (Sparse Checkout 완벽 가이드)


🎯 목표

원격 Git 저장소에서 전체 파일을 받지 않고, 특정 하위 폴더만 선택적으로 가져오는 방법입니다.
Git의 sparse checkout 기능을 활용하면, 디스크 공간과 시간 낭비 없이 원하는 부분만 효율적으로 작업할 수 있습니다.


🛠 단계별 사용 방법

1. 작업 디렉토리 생성


  
mkdir 원하는_작업_폴더
cd 원하는_작업_폴더

2. Git 저장소 초기화 및 원격 연결


  
git init
git remote add -f origin <원격_저장소_URL>

3. Sparse Checkout 기능 활성화


  
git config core.sparseCheckout true

4. 가져올 폴더 경로 지정


  
echo "원하는/폴더/경로1/" >> .git/info/sparse-checkout
echo "원하는/폴더/경로2/" >> .git/info/sparse-checkout
  • >>는 기존 내용을 유지하면서 한 줄씩 추가하는 명령어입니다.
  • 경로는 반드시 저장소 기준 상대 경로로, 폴더명 끝에 슬래시 /를 포함해야 합니다.

5. 폴더 가져오기


  
git pull origin <브랜치명>

🔍 예시: 두 개의 폴더만 가져오기


  
mkdir my-sparse-project
cd my-sparse-project
git init
git remote add -f origin https://github.com/사용자명/저장소명.git
git config core.sparseCheckout true
echo "src/client/" >> .git/info/sparse-checkout
echo "docs/" >> .git/info/sparse-checkout
git pull origin main

📂 디렉토리 구조 이해


  
my-sparse-project/
├── .git/
│ └── info/
│ └── sparse-checkout # 가져올 폴더 경로를 나열한 설정 파일
├── src/
│ └── client/ # 실제 가져온 폴더
├── docs/ # 실제 가져온 폴더

.git/info/sparse-checkout 파일 예시 내용:


  
src/client/
docs/

⚠️ 주의사항

항목 설명
경로 형식 저장소 기준 상대 경로 사용, 끝에 슬래시 / 필수
브랜치명 main, master, 또는 실제 사용하는 브랜치 이름 사용
여러 경로 .git/info/sparse-checkout 파일에 한 줄씩 추가 작성 (>> 또는 직접 편집)
Git 버전 Git 2.25 이상부터 지원됨 (이전 버전은 sparse-checkout 사용 불가)

💡 참고: echo 대신 직접 편집도 가능


  
nano .git/info/sparse-checkout

또는


  
vi .git/info/sparse-checkout

에서 여러 경로를 직접 입력해도 됩니다.


📚 관련 용어 정리

용어 설명
sparse checkout 전체가 아닌 일부 파일/폴더만 checkout하는 Git 기능
.git/info/sparse-checkout 가져올 폴더 경로들을 지정하는 파일
>> 파일에 한 줄씩 덧붙이는 리디렉션 연산자
pull 원격 저장소로부터 지정된 커밋(폴더들 포함)을 가져오는 명령

댓글