티스토리 뷰
728x90
✅ Sparse Checkout이란?
Sparse Checkout은 Git에서 레포지토리의 특정 디렉터리 또는 파일만 가져올 수 있는 기능으로, 필요한 소스만 클론하거나 체크아웃하여 불필요한 데이터를 줄이는 방법입니다.
Git 2.25 이상에서는 사용법이 더욱 간편해졌습니다.
🔖 Sparse Checkout의 장점
- 속도 향상: 대규모 레포지토리에서 일부만 가져와 속도를 높입니다.
- 디스크 공간 절약: 불필요한 파일이 없어 디스크 용량을 아낄 수 있습니다.
- 빌드 및 CI 속도 개선: 특정 디렉터리만 가져와 빌드 성능을 향상시킬 수 있습니다.
🚩 사용법 예시 (Step by Step)
다음은 GitLab 레포지토리를 Sparse Checkout으로 클론하는 예시입니다.
1️⃣ 빈 상태로 레포지토리 클론하기
git clone --no-checkout https://gitlab.example.com/your-project.git
cd your-project
- --no-checkout: 메타데이터만 가져오고 파일을 아직 체크아웃하지 않습니다.
2️⃣ Sparse Checkout 활성화
git sparse-checkout init --cone
- --cone 옵션을 사용하면 간단한 패턴 지정으로 특정 폴더나 파일을 빠르게 체크아웃할 수 있습니다.
3️⃣ 원하는 디렉터리 설정하기
예를 들어, src 폴더와 docs 폴더만 가져오고 싶다면:
git sparse-checkout set src docs
- 복수의 디렉터리는 공백으로 구분하여 추가할 수 있습니다.
4️⃣ 파일 체크아웃
위 작업 후 다음 명령으로 실제로 원하는 파일이 체크아웃됩니다.
git checkout
이제 워킹 디렉터리에는 src, docs 폴더만 존재하게 됩니다.
🎯 Sparse Checkout 설정 확인하기
현재 Sparse Checkout으로 설정된 항목을 확인하려면:
git sparse-checkout list
출력 예시:
src
docs
📌 설정 추가 또는 제거하기
- 디렉터리 추가:
git sparse-checkout add another-folder
- 디렉터리 제거:
git sparse-checkout set src # 다시 설정하면 기존 설정은 덮어쓰고 새로 지정한 내용만 유지
🚨 Sparse Checkout 주의사항
- Sparse Checkout은 파일 히스토리(history)는 모두 가져옵니다. 즉, 전체 히스토리를 보유하지만 워킹 디렉터리에 특정 파일만 노출시키는 방식입니다.
- 일부 파일만 히스토리까지 제거하려면 완전히 별도의 레포지토리로 분리하거나 submodule 방식을 사용하는 것이 적절합니다.
🔑 Sparse Checkout 사용 추천 상황
- 모노레포 환경: 특정 서비스만 가져와 개발하거나 빌드할 때 유용합니다.
- 대규모 프로젝트: 큰 레포지토리에서 일부만 빠르게 수정하고 싶을 때 최적의 기능입니다.
- CI/CD: 빠르게 특정 부분만 체크아웃하여 빌드하거나 테스트를 수행할 때 권장됩니다.
이러한 방식으로 GitLab 레포지토리에서 효율적으로 Sparse Checkout 기능을 활용할 수 있습니다.
728x90
'CI_CD' 카테고리의 다른 글
실무에서 유용한 Git Subtree 활용 팁 7가지 (0) | 2025.03.20 |
---|---|
Git Subtree란? (0) | 2025.03.20 |
Git Submodule이란? (0) | 2025.03.20 |
GitLab을 포함한 Git 환경에서 레포지토리의 일부 코드나 디렉터리만 가져오는 5가지 방법 (0) | 2025.03.20 |
Docker Compose란? (0) | 2025.03.20 |