을 바탕으로 이 대답 하여 apenwarr 및 이 댓글 로 밀알 I 복제 할 때 디스크 공간이 나에게 거의 94 %를 저장 한 다음 솔루션을 내놓았다 리눅스 자식 저장소 로컬 하나 개의 문서 하위 디렉토리를 원하는 반면 :
$ cd linux
$ du -sh .git .
2.1G .git
894M .
$ du -sh
2.9G .
$ mkdir ../linux-sparse-test
$ cd ../linux-sparse-test
$ git init
Initialized empty Git repository in /…/linux-sparse-test/.git/
$ git config core.sparseCheckout true
$ git remote add origin ../linux
# Parameter "origin master" saves a tiny bit if there are other branches
$ git fetch --depth=1 origin master
remote: Enumerating objects: 65839, done.
remote: Counting objects: 100% (65839/65839), done.
remote: Compressing objects: 100% (61140/61140), done.
remote: Total 65839 (delta 6202), reused 22590 (delta 3703)
Receiving objects: 100% (65839/65839), 173.09 MiB | 10.05 MiB/s, done.
Resolving deltas: 100% (6202/6202), done.
From ../linux
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
$ echo "Documentation/hid/*" > .git/info/sparse-checkout
$ git checkout master
Branch 'master' set up to track remote branch 'master' from 'origin'.
Already on 'master'
$ ls -l
total 4
drwxr-xr-x 3 abe abe 4096 May 3 14:12 Documentation/
$ du -sh .git .
181M .git
100K .
$ du -sh
182M .
그래서 나는 2.9GB에서 182MB로 내려갔습니다.
누락 된 파일이 모두 제거 된 파일로 색인에 추가 되었으므로이 작업을 수행하지 못했습니다 git clone --depth 1 --no-checkout --filter=blob:none file:///…/linux linux-sparse-test
( 여기 참조 ). 사람이하는 것과 알고 그래서 경우 git clone --filter=blob:none
를 들어 git fetch
, 우리는 아마 좀 더 메가 바이트를 저장할 수 있습니다. (man 페이지를 git-rev-list
읽으면와 같은 것이 있음을 암시 --filter=sparse:path=…
하지만 그중 하나도 작동하지 않습니다.
(모두 Debian Buster의 git 2.20.1로 시도했습니다.)