[Git] 대용량 리포지토리를 clone한다!
2142 단어 신인 프로그래머 응원Git
이곳은 현장 노하우계에서 차를 탁하자…
무슨 일이야! ?
내용이 방대한 Git 저장소, 있다고 생각합니다 ...
(게임 앱의 애셋 리포지토리라든지)
그것을 clone하려고하면 오류가 발생합니다.
Cloning into 'xxxxxxxxxx'...
Warning: Permanently added '[xxx.xxx.xxx.xxx]:11111' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 83107, done.
remote: Counting objects: 100% (83107/83107), done.
remote: Compressing objects: 100% (54788/54788), done.
ssh_dispatch_run_fatal: Connection to xxx.xxx.xxx.xxx port 11111: message authentication code incorrect
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
어떻게! ?
몇 가지 방법이있을 것 같지만,
버퍼를 크게 해본다
이것만으로는 좋지 않았습니다 ....
git config --global http.postBuffer 524288000
하지만 설정해 보는 것에 넘어선 적은 없을 것입니다.
최신 상태만 clone 해 본다
--depth X
에서 최근 업데이트 X 건에만 포함된 데이터로 짜서 clone 합니다.
git clone --depth 1 リポジトリurl
하지만 좋지 않았습니다 ....
그 가까운 상태에서 이미 방대하다면 無駄無駄無駄無駄無駄無駄無駄無駄ッッッ!!
리포지토리 내용 중 일부만 clone
이것으로 어떻게 꽤 있었습니다…!
그러나 조건이 ...
어떠한 방법으로, 리포지토리내의 디렉토리나 파일 구성을 벌써 알고 있지 않으면 이 손은 사용할 수 없습니다.
우선, 받아들이는 디렉토리를 로컬에 작성
mkdir ttt
cd ttt
git init
일부만 clone하기 위한 설정을 실시한다
git config core.sparsecheckout true
git remote add origin リポジトリurl
clone하려는 경로만 열거한 텍스트 파일 만들기
vi로 필기라든지 뭐든지 OK입니다만, 일발 커맨드라든가라면↓ 이런 느낌으로.
cat - << EOS >> .git/info/sparse-checkout
リポジトリurlより下の、欲しい/パス
リポジトリurlより下の、欲しい/パス2
リポジトリurlより下の、欲しい/パス3
EOS
※ 欲しいパス
의 내용이 이미 방대하다면, 최선을 다하고 더 서브 디렉토리와 파일을 짜내십시오 ...
막상 clone! (실제는 git pull이지만)
git pull origin master
이게 어떻게 됐어!
응 아 아 아 아 아 아 아 아 아 아 아! ! !
여담
리포지토리(Git 서버)측의 조작 권한이 있으면, 그 밖에도 할 수 있는 방법은 있는 것 같습니다(미리 압축하거나라든지)
나의 경우는 수탁 안건 때문에 그 권한이 없고, 앞에서 어떻게 해야 했기 때문에…
Reference
이 문제에 관하여([Git] 대용량 리포지토리를 clone한다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yagrush/items/2ba838cd3c42438f446b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Cloning into 'xxxxxxxxxx'...
Warning: Permanently added '[xxx.xxx.xxx.xxx]:11111' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 83107, done.
remote: Counting objects: 100% (83107/83107), done.
remote: Compressing objects: 100% (54788/54788), done.
ssh_dispatch_run_fatal: Connection to xxx.xxx.xxx.xxx port 11111: message authentication code incorrect
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
몇 가지 방법이있을 것 같지만,
버퍼를 크게 해본다
이것만으로는 좋지 않았습니다 ....
git config --global http.postBuffer 524288000
하지만 설정해 보는 것에 넘어선 적은 없을 것입니다.
최신 상태만 clone 해 본다
--depth X
에서 최근 업데이트 X 건에만 포함된 데이터로 짜서 clone 합니다.git clone --depth 1 リポジトリurl
하지만 좋지 않았습니다 ....
그 가까운 상태에서 이미 방대하다면
無駄無駄無駄無駄無駄無駄無駄無駄ッッッ!!
리포지토리 내용 중 일부만 clone
이것으로 어떻게 꽤 있었습니다…!
그러나 조건이 ...
어떠한 방법으로, 리포지토리내의 디렉토리나 파일 구성을 벌써 알고 있지 않으면 이 손은 사용할 수 없습니다.
우선, 받아들이는 디렉토리를 로컬에 작성
mkdir ttt
cd ttt
git init
일부만 clone하기 위한 설정을 실시한다
git config core.sparsecheckout true
git remote add origin リポジトリurl
clone하려는 경로만 열거한 텍스트 파일 만들기
vi로 필기라든지 뭐든지 OK입니다만, 일발 커맨드라든가라면↓ 이런 느낌으로.
cat - << EOS >> .git/info/sparse-checkout
リポジトリurlより下の、欲しい/パス
リポジトリurlより下の、欲しい/パス2
リポジトリurlより下の、欲しい/パス3
EOS
※
欲しいパス
의 내용이 이미 방대하다면, 최선을 다하고 더 서브 디렉토리와 파일을 짜내십시오 ...막상 clone! (실제는 git pull이지만)
git pull origin master
이게 어떻게 됐어!
응 아 아 아 아 아 아 아 아 아 아 아! ! !
여담
리포지토리(Git 서버)측의 조작 권한이 있으면, 그 밖에도 할 수 있는 방법은 있는 것 같습니다(미리 압축하거나라든지)
나의 경우는 수탁 안건 때문에 그 권한이 없고, 앞에서 어떻게 해야 했기 때문에…
Reference
이 문제에 관하여([Git] 대용량 리포지토리를 clone한다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yagrush/items/2ba838cd3c42438f446b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Git] 대용량 리포지토리를 clone한다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yagrush/items/2ba838cd3c42438f446b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)