이 글은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Git 및 Github는 다른 도구입니다. Git은 버전 제어를위한 소프트웨어이며 Github는 Git을 기반으로 한 온라인 플랫폼입니다. 1. git을 사용하면 파일 변경 및 협업 개발을 추적 할 수 있습니다. 2. GitHub은 팀 개발 효율성을 향상시키기 위해 코드 호스팅 및 협업 도구를 제공합니다.

GitHub의 핵심 기능에는 버전 제어, 지점 관리, 코드 검토, 문제 추적 및 프로젝트 관리가 포함됩니다. 1. 버전 제어 및 지점 관리는 GIT를 기반으로하므로 코드 변경 및 실험 개발을 추적 할 수 있습니다. 2. 코드 검토는 PullRequest를 통해 구현되어 코드 품질 및 팀 협업을 개선합니다. 3. 문제 추적 및 프로젝트 관리는 프로젝트 투명성 및 추적 성을 향상시키기 위해 문제와 프로젝트 관리위원회를 통해 수행됩니다.

Github는 소프트웨어 개발의 효율성과 품질을 향상시키는 강력한 도구입니다. 1) 버전 제어 : GIT를 통해 코드 변경을 관리합니다. 2) PullRequests : 코드 검토를 수행하고 코드 품질을 향상시킵니다. 3) 문제 : 버그 및 프로젝트 진행 상황을 추적합니다. 4) githubactions : 건설, 테스트 및 배치 프로세스를 자동화합니다.

GIT는 버전 제어 시스템이며 GitHub는 GIT 기반 코드 호스팅 플랫폼입니다. GIT는 코드 버전을 관리하는 데 사용되며 로컬 작업을 지원합니다. GitHub는 문제 추적 및 풀 레크와 같은 온라인 협업 도구를 제공합니다.

GIT는 개발자가 파일 변경을 추적하고 협력하며 코드 버전을 관리하는 데 도움이되는 오픈 소스 분산 버전 제어 시스템입니다. 핵심 기능에는 1) 레코드 코드 수정, 2) 이전 버전으로의 폴백, 3) 협업 개발 및 4) 병렬 개발을위한 분기 생성 및 관리가 포함됩니다.

Git과 Github도 같은 것이 아닙니다. GIT는 버전 제어 시스템이며 GitHub는 GIT 기반 코드 호스팅 플랫폼입니다. GIT는 코드 버전을 관리하는 데 사용되며 Github은 온라인 협업 환경을 제공합니다.

HTML 프로젝트를 관리하기 위해 GitHub를 사용하는 이유는 버전 제어, 협업 개발 및 작품 발표를위한 플랫폼을 제공하기 때문입니다. 특정 단계에는 다음이 포함됩니다. 1. Git 저장소 작성 및 초기화, 2. HTML 파일 추가 및 제출, 3. GitHub에 푸시, 4. GitHubPages를 사용하여 웹 페이지를 배포, 5. GitHubactions를 사용하여 빌드 및 배포를 자동화하십시오. 또한 GitHub은 HTML 프로젝트를 최적화하고 협업하는 데 도움이되는 코드 검토, 문제 및 풀 레크 기능 기능을 지원합니다.

GIT에서 시작하는 것은 버전 제어 원칙에 대한 깊은 이해에 더 적합하며 GitHub에서 시작하는 것은 협업 및 코드 호스팅에 중점을 두는 데 더 적합합니다. 1. git은 코드 버전 기록을 관리하는 데 도움이되는 분산 버전 제어 시스템입니다. 2. GitHub는 GIT를 기반으로 한 온라인 플랫폼으로 코드 호스팅 및 협업 기능을 제공합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

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

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
