Git으로 대용량 파일의 버전을 지정하는 방법
Indeed. The git architecture simply sucks for big objects. It was discussed somewhat during the early stages, but a lot of it really is pretty fundamental. (Linus Torvalds)
이 짧은 게시물에서 다음을 수행하고 싶습니다.
몇 개의 100MB 파일을 커밋한 다음 현재 저장소의 일부임을 깨닫고take quite an effort to carve it out 저장소를 수정한 적이 있습니까?
Git 클론은 몇 시간이 걸리고 일반 작업은 몇 초가 아닌 몇 분이 걸릴 수 있습니다. 실제로 가장 좋은 아이디어는 아닙니다. 그리고 게임 개발부터 대용량 데이터 세트, 비디오 등을 처리하려는 데이터 과학에 이르기까지 저장소에 대용량 파일 버전을 지정하려는 경우가 많습니다.
따라서 이를 처리하기 위해 어떤 오픈 소스 및 Git 호환 옵션이 있는지 살펴보겠습니다.
LFS 및 부속 도구here에 대한 (다소 오래된) 개요를 읽을 수 있지만 이번에는 DVC의 워크플로우가 어떻게 보이는지 보여드리고 싶습니다(예! 저는 관리자 중 한 명입니다).
DVC가 installed인 후 우리가 해야 할 일은
dvc add
를 실행하고 대용량 파일을 저장하는 데 사용할 저장소를 설정하는 것뿐입니다.여기저기서 시도해 봅시다. 먼저 더미 저장소가 필요합니다.
$ mkdir example
$ cd example
$ git init
$ dvc init
$ git commit -m "initialize"
둘째, 큰 파일을 생성합니다.
$ head -c1000000 /dev/urandom > large-file
# Windows: fsutil file large-file test.txt 1048576
작업 흐름은 Git과 유사하지만 큰 파일을 저장하려는 경우
git add
및 git push
대신 dvc add
및 dvc push
를 실행합니다.$ dvc add large-file
이제 어딘가에 저장해 보겠습니다(여기서는 Google 드라이브를 사용하지만 AWS S3, Google Cloud, 로컬 디렉터리 및 기타 여러 항목storage options일 수 있음):
$ dvc remote add -d mystorage gdrive://root/Storage
$ dvc push
You'd need to create the
Storage
directory in your Google Drive UI first anddvc push
will ask you to give it access to your storage. It is absolutely safe! - credentials are saved on your local machine in the.dvc/tmp/gdrive-user-credentials.json
, no access given outside.
이제
git commit
를 수행하여 큰 파일 자체 대신 DVC 파일을 저장할 수 있습니다(dvc status
를 실행하여 large-file
가 더 이상 Git에서 처리되지 않고 표시되지 않음을 확인할 수 있습니다):$ git add .
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: .dvc/config
new file: .gitignore
new file: large-file.dvc
$ git commit -a -m "add large file"
오늘은 여기까지입니다. 다음 시간에는 어떻게 작동했는지,
large-file.dvc
가 무엇을 의미하는지, 왜 .gitignore
를 생성하는지, 그리고 어떻게 파일을 다시 가져올 수 있는지 살펴보겠습니다!
Reference
이 문제에 관하여(Git으로 대용량 파일의 버전을 지정하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shcheklein/how-to-version-large-files-with-git-2ij1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)