Sparse Checkout이란?

19 sec read

✅ 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 기능을 활용할 수 있습니다.

쿠버네티스 시크릿 관리, 어떤 방법이 최선일까? 4가지 방식 장단점…

쿠버네티스에서 애플리케이션을 운영할 때, DB 접속 정보나 API 키 같은 민감한 정보, 즉 ‘시크릿(Secret)’을 어떻게 관리해야 할지는 모두의 공통된 고민입니다. 관리 방식은 보안, 운영...
eve
13 sec read

[MSA] Spring Cloud Gateway VS Apache APISIX : 단계별…

마이크로서비스 아키텍처(MSA)에서 API 게이트웨이는 시스템의 관문 역할을 하는 핵심 컴포넌트입니다. 수많은 Java 개발팀이 Spring 생태계와의 완벽한 통합성을 자랑하는 Spring Cloud Gateway를 선택해왔습니다. 그러나 시스템이...
eve
1 min read

[Kafka] 카프카의 심장: 토픽, 파티션, 프로듀서, 컨슈머 완벽 해부

Apache Kafka가 어떻게 대용량 데이터를 실시간으로, 그리고 안정적으로 처리할 수 있는지 궁금하신가요? 그 비밀은 Kafka를 구성하는 핵심 요소들의 유기적인 협력에 있습니다. Kafka는 마치 잘...
eve
1 min read