GIT LFS 마이그레이션 지침(자세한 예)
이 글은 GIT LFS 서버 구성, GIT LFS 클라이언트 설치, 로컬 히스토리 웨어하우스 마이그레이션 등 GIT LFS와 관련된 문제를 주로 소개하는 Git에 대한 관련 지식을 제공합니다. 여러분에게 도움이 되기를 바랍니다. 도움이됩니다.
추천 학습: "Git Learning Tutorial"
이전에 일부 git 프로젝트에서 CI/CD를 사용했는데 jenkins git clone이 실패하고 깊이 및 복제 시간 설정이 실패했음을 발견했습니다. 창고 축소와 같은 전략만 고려할 수 있습니다. 웨어하우스에는 많은 바이너리 파일이 있고 이러한 바이너리 파일이 매우 자주 변경되는 것으로 나타났습니다. 이 작업으로 인해 Git 웨어하우스는 기하급수적으로 늘어나고 Git 자체는 텍스트 파일 관리에만 적합합니다.
또 다른 흥미로운 이야기는 그래픽 프로그래밍에 관심이 있는 동료가 있었다는 것입니다. 이 언어의 소스 코드는 이미지 형식이었고 파일이 매우 커서 git에서 관리되었으며 소규모 회사의 프로젝트가 변경되었습니다. 이로 인해 얼마 지나지 않아 git 서버 하드 디스크가 실제로 그의 git 저장소 중 일부로 가득 차게 되었습니다.
GIT LFS(대형 파일 저장소)
git은 바이너리 파일 관리에 적합한 적이 없었지만 이제 git은 대용량 파일 관리를 위해 특별히 설계된 플러그인인 git lfs를 기본적으로 제공하는 것 같습니다.
기본 원리는 단순히 실제 파일 저장 대신 파일 포인터(텍스트)를 사용하는 것입니다. git은 전체 바이너리 파일이 아닌 파일 포인터의 변경 내역만 저장하고 사용 시 자동으로 Hook을 제공하므로 편리합니다. clone, pull, 재설정 및 기타 작업의 경우 이러한 파일 포인터의 소스 바이너리 파일을 자동으로 얻습니다. 마찬가지로 바이너리 파일 커밋을 업데이트할 때 git은 자동으로 소스 파일을 파일 포인터로 변환하고 이를 git log에 입력합니다. 동시에 소스 파일이 lfs에 업로드됩니다. 따라서 사용자 수준에서 GIT LFS를 사용하는 것은 실제로 의미가 없습니다.
Migration
위에서는 GIT LFS에 대해 간략하게 소개합니다. 다음으로 LFS를 처음부터 사용하는 방법이 아닌 마이그레이션에 대해 직접 이야기하는 이유에 대해 설명하겠습니다.
git Warehouse를 사용하다 보면 종종 웨어하우스가 너무 크고 clone이 너무 느리다는 것을 알게 되면서 LFS를 사용해보고 싶다는 생각을 하게 되기 때문입니다.
마이그레이션을 위해서는 웨어하우스의 관리자 권한이 필요하고 보호된 지점의 보호를 해제해야 합니다.
구체적인 LFS 마이그레이션은 주로 다음 단계로 나뉩니다.
마이그레이션하기 전에 백업을 하고 팀 동료들과 잘 소통하는 것이 가장 좋습니다. 결국 작업에는 -f 고위험 작업이 포함되며 비난을 받기 쉽습니다.
GIT LFS 서버 구성
자체 구축된 Git 서비스를 구축하는 경우 gitlab과 같은 서버 측에서 LFS를 활성화해야 할 수도 있습니다.
GIT LFS 클라이언트 설치
이 플러그인은 Windows용 git 설치 패키지와 함께 제공됩니다. 다른 플랫폼에서 직접 설치할 수 있습니다.
명령줄에서 다음 명령을 사용해 보세요.
git lfs
도움말 문서와 유사한 정보 출력이 있으면 이미 git lfs 클라이언트가 있다는 의미입니다.
git-lfs/2.11.0 (GitHub; windows amd64; go 1.14.2; git 48b28d97)git lfs <command> [<args>]Git LFS is a system for managing and versioning large files in association with a Git repository. Instead of storing the large files within the Git repository as blobs, Git LFS stores special "pointer files" in the repository, while storing the actual file contents on a Git LFS server. The contents of the large file are downloaded automatically when needed, for example when a Git branch containing the large file is checked out.Git LFS works by using a "smudge" filter to look up the large file contents based on the pointer file, and a "clean" filter to create a new version of the pointer file when the large file's contents change.It also uses a pre-push hook to upload the large file contents to the Git LFS server whenever a commit containing a new large file version is about to be pushed to the corresponding Git server.</args></command>
그런 다음 LFS 글로벌 환경을 구성하려면 다음 명령을 실행해야 합니다. 한 번만 구성하면 되며 현재 웨어하우스의 후크도 동시에 업데이트됩니다
git lfs install
로컬 기록 창고 마이그레이션
lfs 마이그레이션의 기본 아이디어: lfs 로컬 기록 다시 쓰기 —>force push는 원격 끝을 덮어써 마이그레이션 효과를 얻습니다.
따라서 로컬 웨어하우스를 원격 웨어하우스와 동기화하고 모든 원격 브랜치에 대한 로컬 브랜치를 생성하는 것이 좋습니다.
그런 다음 로컬 웨어하우스로 이동하여 다음 명령을 실행합니다. –include에는 glob 표현식이 포함되어 있으며 직접 LFS를 추가합니다. 관리되는 파일의 이름, –everything은 모든 로컬 브랜치를 나타냅니다
git lfs migrate import --include="*.bin,*.lib,*.so,*.dll,*.a,*.param,*.zip,*.gz" --everything
migrate: Sorting commits: ..., done. migrate: Rewriting commits: 100% (193/193), done. develop bacb490a80ea46d73bd3866c2e7cf7ad199ce5eb -> 72884bcb4629417bad73ea3d485d08a0708909cd feature/npu-platform a3645632756becc527c7f4d58514b3c479f824d3 -> e227900a3903b3a6955e4dffee48daeceac6cdff master 1ccdecdcb4b5d6224a6e24c6f87793bfcc15ee4c -> 1d9fc2139600ef3d92a20d65bb5db89021b8c488 0.1.0 07c6b2aa732506f1cc88cedb551f37f376b6efa6 -> 8e55193221dfca9f6bb28ccd9cca85af9c5958c9 1.0.0 0f694efcd7aa9df641836e1ea6eebbb730b940b5 -> 3f9e77575120b6e56b34790c998a362116da75f5 migrate: Updating refs: ..., done.
로컬 브랜치, 태그 등을 다시 작성한 후
먼저 여기에서 git lfs ls-files를 실행하여 어떤 파일이 lfs 관리로 변환되었는지 확인할 수 있습니다. 누락된 부분이 있는지 확인해주세요
이때, 어느 브랜치에 있든 .gitattributes 파일이 나타나며, 다음과 비슷한 내용이 추가됩니다.
*.bin filter=lfs diff=lfs merge=lfs -text *.lib filter=lfs diff=lfs merge=lfs -text *.so filter=lfs diff=lfs merge=lfs -text *.dll filter=lfs diff=lfs merge=lfs -text *.a filter=lfs diff=lfs merge=lfs -text *.param filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.gz filter=lfs diff=lfs merge=lfs -text
동시에 모든 바이너리 파일이 다음 형식의 텍스트로 변환된 것을 볼 수 있습니다
version https://git-lfs.github.com/spec/v1 oid sha256:9171c8350d72ccca6ad60ac80b577157ad1f9fd44ca05744216e02ccbfcdf491 size 10260
올바른지 확인한 다음 원격 엔드로 푸시할 수 있습니다.
lfs는 모든 커밋을 다시 작성하고 해시 값을 수정하므로 –froce를 추가해야 합니다
이 단계에서는 보호된 브랜치를 취소해야 합니다(보호된 브랜치는 -f일 수 없음)
git push --force --all
이렇게 하면 원격 웨어하우스의 lfs 마이그레이션이 완료됩니다.
迁移一些补充说明
- 迁移者的本地仓库lfs文件转源文件:经过以上步骤,由于我们将所有文件都已经转成文件指针,我们需要将文件下载回来才能正常使用该仓库。
需要注意,其他人重新clone 或者同步 lfs迁移过的remote仓库 是不需要该步,只针对迁移作者本地的仓库。
git lfs pull
- 团队中其他成员迁移前的本地仓库同步: 由于远程仓库的历史已经被全部重写,所以无法直接同步,最好是删除本地分支,重新拉取远程分支,如果本地已经有部分commit需要提交,可以重名本地分支,拉取远程再做cherry pick。git tag 同理,删除迁移前的tag。
- 本地仓库清理:上面的迁移成功将二进制文件迁移成git lfs 对象,git log 也不在存储源文件文件变更而是指针变更,但是在本地.git文件夹中仍存在之前不再需要的git log 缓存,执行以下命令做清理。
git reflog expire --expire-unreachable=now --all git gc --prune=now
清理前后仓库对比
lfs直观来讲更多的是针对仓库大clone慢的问题,我这边lfs迁移前后各备份各一个小型远程仓库做测试,
用的测试仓库二进制文件比较小,总大50m内,且变更次数也在个位数。
clone下来的仓库大小对比。
和我预估差不多,总的来说更适合二进制文件频繁变更,如果单纯是文件大,但文件不变更的话,在clone的时候区别不大,毕竟lfs在clone仍有下载源文件的步骤,除开下载,操作文件指针对git来说理论仍会有性能提升,但是可能感知不强。推荐学习:《Git教程》
위 내용은 GIT LFS 마이그레이션 지침(자세한 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











H5 프로젝트를 실행하려면 다음 단계가 필요합니다. Web Server, Node.js, 개발 도구 등과 같은 필요한 도구 설치. 개발 환경 구축, 프로젝트 폴더 작성, 프로젝트 초기화 및 코드 작성. 개발 서버를 시작하고 명령 줄을 사용하여 명령을 실행하십시오. 브라우저에서 프로젝트를 미리보고 개발 서버 URL을 입력하십시오. 프로젝트 게시, 코드 최적화, 프로젝트 배포 및 웹 서버 구성을 설정하십시오.

코드 취약점, 브라우저 호환성, 성능 최적화, 보안 업데이트 및 사용자 경험 개선과 같은 요소로 인해 H5 페이지를 지속적으로 유지해야합니다. 효과적인 유지 관리 방법에는 완전한 테스트 시스템 설정, 버전 제어 도구 사용, 페이지 성능을 정기적으로 모니터링하고 사용자 피드백 수집 및 유지 관리 계획을 수립하는 것이 포함됩니다.

자기 연구 H5 페이지 제작은 가능하지만 빠른 성공은 아닙니다. 디자인, 프론트 엔드 개발 및 백엔드 상호 작용 로직을 포함하는 HTML, CSS 및 JavaScript 마스터 링이 필요합니다. 연습은 핵심이며, 튜토리얼을 작성하고, 자료를 검토하고, 오픈 소스 프로젝트에 참여하여 배우십시오. 성능 최적화도 중요하며 이미지 최적화, HTTP 요청을 줄이고 적절한 프레임 워크를 사용해야합니다. 자기 학습으로가는 길은 길고 지속적인 학습과 의사 소통이 필요합니다.

수정 된 부트 스트랩 결과를보기위한 단계 : Bootstrap 파일이 올바르게 참조되도록 브라우저에서 직접 HTML 파일을 엽니 다. 브라우저 캐시를 지우십시오 (Ctrl Shift R). CDN을 사용하는 경우 개발자 도구에서 CSS를 직접 수정하여 효과를 실시간으로 볼 수 있습니다. 부트 스트랩 소스 코드를 수정 한 경우 로컬 파일을 다운로드하여 교체하거나 Webpack과 같은 빌드 도구를 사용하여 빌드 명령을 다시 실행하십시오.

Pagination은 큰 데이터 세트를 작은 페이지로 나누어 성능 및 사용자 경험을 향상시키는 기술입니다. VUE에서 다음 내장 방법을 페이징에 사용할 수 있습니다. 총 페이지 수를 계산하십시오 : TotalPages () Traversal 페이지 번호 : V-For Directive 현재 페이지를 설정하려면 : CurrentPage 현재 페이지 데이터 가져 오기 : currentPagedAta ()

HADIDB : 가볍고 높은 수준의 확장 가능한 Python 데이터베이스 HadIDB (HADIDB)는 파이썬으로 작성된 경량 데이터베이스이며 확장 수준이 높습니다. PIP 설치를 사용하여 HADIDB 설치 : PIPINSTALLHADIDB 사용자 관리 사용자 만들기 사용자 : createUser () 메소드를 작성하여 새 사용자를 만듭니다. Authentication () 메소드는 사용자의 신원을 인증합니다. Fromhadidb.operationimportuseruser_obj = user ( "admin", "admin") user_obj.

MySQL 및 MariaDB 데이터베이스의 효과적인 모니터링은 최적의 성능을 유지하고 잠재적 인 병목 현상을 식별하며 전반적인 시스템 신뢰성을 보장하는 데 중요합니다. Prometheus MySQL Expler는 능동적 인 관리 및 문제 해결에 중요한 데이터베이스 메트릭에 대한 자세한 통찰력을 제공하는 강력한 도구입니다.

Bootstrap의 JavaScript 섹션은 정적 페이지에 활력을주는 대화식 구성 요소를 제공합니다. 오픈 소스 코드를 살펴보면 작동 방식을 이해할 수 있습니다. 이벤트 바인딩은 DOM 작업 및 스타일 변경을 유발합니다. 기본 사용에는 JavaScript 파일의 도입 및 API 사용이 포함되며 고급 사용법은 사용자 정의 이벤트 및 확장 기능이 포함됩니다. 자주 묻는 질문에는 버전 충돌과 CSS 스타일 충돌이 포함되며, 코드를 두 번 확인하여 해결할 수 있습니다. 성능 최적화 팁에는 주문형로드 및 코드 압축이 포함됩니다. 부트 스트랩 자바 스크립트를 마스터하는 핵심은 설계 개념을 이해하고 실제 응용 프로그램을 결합하며 개발자 도구를 사용하여 디버깅 및 탐색하는 것입니다.
