[git] Sparse Checkout
git checkout
은 보통 브랜치의 모든 구조를 가져온다. checkout 은 다음 링크 설명을 보고 이해해 보자,
Sparse checkout 은 checkout 전체 대상중 일부 만을 checkout 할 수 있다.
git sparse checkout
기능은 Git 2.25.0 이상부터 사용이 가능하다.
Sparse checkout 이해
git 블로그 글 Bring your monorepo down to size with sparse-checkout 의 그림 설명을 빌려오자.
다음 원격 레포지토리가 있다고 가정하자
전체 디렉토리 중에서 client/android 부분만 checkout 을 하고 싶다.
다음 같이 클론을 하고 sparse-checkout 을 초기화 한 후에 대상인 client/android 디렉토리를 sparse-checkout 하면 해당 디렉토리만 다운로드한다.
1 | git clone https://github.com/tensorflow/examples.git |
sparse-checkout 을 수행하면 해당 디렉토리 컨텐츠만 남게 된다.
사용 방법
사용시 몇가지 사례가 있다.
방법1
첫번째 방법으로 git 레포지토리를 pull로 clone 한 후에 sparse-checkout 대상 파일/폴더를 지정하고 sparse-checkout 을 수행한다.
1 | git clone https://github.com/tensorflow/examples.git |
spase-checkout 을 수행하기 위해서 초기화 하고 대상이 되는 파일/폴더를 지정한다.
1 | cd examples |
희소 체크아웃을 사용하도록 git 인스턴스를 구성하면 지정한 파일/폴더만 남게 된다.
저장소에서
config core.sparseCheckout true
대신git sparse-checkout init --cone
를 이용해도 된다.
방법2
레포지토리를 클론하지 않고 클라이언트에서 초기화 후 sparse-checkout 으로 대상 디렉토리를 지정한 후에 pull 을 수행한다.
원격 레포지토리를 지정한다.
1 | mkdir <repo> |
spase-checkout 을 수행하기 위해서 초기화 하고 대상이 되는 파일/폴더를 set 으로 지정한다. 여러 파일/디렉토리를 추가할 수 있다.
1 | git config core.sparseCheckout true |
pull 을 수행한다.
1 | git pull origin master |
저장소에서
config core.sparseCheckout true
대신git sparse-checkout init --cone
를 이용해도 된다.
방법3
방법2와 동일하지만 설정 파일을 통해서 수행하는 점만 다르다.
1 | mkdir <repo> |
원격 레포지토리를 지정하고 git 설정에 추가한다.
1 | git config core.sparseCheckout true |
checkout 하려는 파일과 폴더를 sparse-checkout 파일에 추가한다. 여러 파일/디렉토리를 추가할 수 있다.
1 | echo "lite/examples/object_detection/android" >> .git/info/sparse-checkout |
pull 을 수행한다.
1 | git pull origin master |
함께 보면 유용한 git 명령
간단하게 빌드/테스트 를 하기위해 저장소의 특정 폴더만 clone 할 때 Swallow Clone
을 함께 이용해도 좋을 것 이다.
- 참고
[git] Sparse Checkout