suchen
HeimEntwicklungswerkzeugeIdiotLernen Sie in zehn Minuten die GIT Warehouse-Verschlankung und die GIT LFS-Migrationsanweisungen

Dieser Artikel vermittelt Ihnen relevantes Wissen über GIT Warehouse-Verschlankung und GIT LFS-Migrationsanweisungen. Ich hoffe, dass er für alle hilfreich ist.

Lernen Sie in zehn Minuten die GIT Warehouse-Verschlankung und die GIT LFS-Migrationsanweisungen

Hintergrund

Ich habe CI/CD zuvor bei einigen Git-Projekten verwendet und festgestellt, dass der Git-Klon von Jenkins fehlgeschlagen ist und die Einstellung von Tiefe und Klonzeit fehlgeschlagen ist. Wir können nur Strategien wie Lagerverkleinerung in Betracht ziehen. Es wurde festgestellt, dass das Warehouse viele Binärdateien enthält und diese sich häufig ändern. Dieser Vorgang führt dazu, dass das Git-Warehouse exponentiell wächst und sich schnell erweitert. Git selbst ist nur für die Verwaltung von Textdateien geeignet.

Eine weitere interessante Geschichte ist, dass ich einmal einen Kollegen hatte, der sich mit Grafikprogrammierung beschäftigte. Der Quellcode dieser Sprache lag in Form von Bildern vor und die Datei war sehr groß. Sie wurde auf Git verwaltet und die Projekte des kleinen Unternehmens wurden geändert häufig, was dazu führte, dass die Festplatte des Git-Servers nicht lange danach für mehrere seiner Git-Repositorys voll war.

GIT LFS (Large File Storage)

Obwohl Git nie für die Verwaltung von Binärdateien geeignet war, scheint Git jetzt standardmäßig Git LFS bereitzustellen, ein Plug-In, das speziell für die Verwaltung großer Dateien entwickelt wurde.

Das Grundprinzip besteht einfach darin, einen Dateizeiger (Text) anstelle der tatsächlichen Dateispeicherung zu verwenden. Git speichert nur den Änderungsverlauf des Dateizeigers und nicht der gesamten Binärdatei und stellt bei Verwendung automatisch Hooks bereit, was praktisch ist Beim Klonen, Ziehen, Zurücksetzen und anderen Vorgängen werden die Quellbinärdateien dieser Dateizeiger automatisch abgerufen. In ähnlicher Weise konvertiert Git beim Aktualisieren der Binärdatei automatisch die Quelldatei in einen Dateizeiger und gibt sie in das Git-Protokoll ein Gleichzeitig wird die Quelldatei in lfs hochgeladen. Auf Benutzerebene ist der Einsatz von GIT LFS also eigentlich sinnlos.

Migration

Das Obige stellt GIT LFS kurz vor. Als nächstes werden wir direkt darüber sprechen, wie man migriert, anstatt wie man LFS von Grund auf verwendet.
Dies liegt daran, dass Sie bei der Verwendung des Git-Warehouse häufig feststellen, dass das Warehouse sehr groß und das Klonen sehr langsam ist, und dann über die Verwendung von LFS nachdenken.

Für die Migration müssen wir über Administratorrechte für das Lager verfügen und den Schutz des geschützten Zweigs aufheben. Die spezifische LFS-Migration ist hauptsächlich in die folgenden Schritte unterteilt.

Es ist am besten, vor der Migration ein Backup zu erstellen und gut mit Ihren Teamkollegen zu kommunizieren. Schließlich handelt es sich bei der Operation um Hochrisikooperationen, und es ist leicht, die Schuld auf sich zu nehmen.

GIT LFS-Serverkonfiguration

Wenn Sie einige selbst erstellte Git-Dienste erstellen, müssen Sie möglicherweise LFS auf der Serverseite aktivieren, z. B. Gitlab.

GIT LFS-Client-Installation

Das Git-Installationspaket für Windows wird mit diesem Plug-in geliefert. Es ist keine zusätzliche Installation erforderlich, Link.

Probieren Sie die folgenden Befehle in der Befehlszeile aus.

git lfs

Wenn eine Informationsausgabe ähnlich dem Hilfedokument vorliegt, bedeutet dies, dass bereits ein Git-LFS-Client vorhanden ist.

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>
Dann müssen Sie den folgenden Befehl ausführen, um die globale LFS-Umgebung zu konfigurieren. Er muss nur einmal konfiguriert werden und gleichzeitig werden auch die Hooks des aktuellen Warehouse aktualisiert

git lfs install

Migrieren Sie das lokale historische Lager. Grundidee der LFS-Migration: LFS schreibt den lokalen Verlauf neu – > Force Push überschreibt das entfernte Ende, um den Migrationseffekt zu erzielen.

Also synchronisieren wir besser das lokale Warehouse mit dem entfernten und erstellen lokale Zweige für alle entfernten Zweige.

Gehen Sie dann zu Ihrem lokalen Warehouse, führen Sie den folgenden Befehl aus: –include enthält den Glob-Ausdruck und fügen Sie LFS selbst hinzu Name der verwalteten Datei, – alles stellt alle lokalen Zweige dar

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.

Nach dem Umschreiben lokaler Zweige, Tags usw.
Wir können hier zunächst

git lfs ls-files

ausführen, um zu sehen, welche Dateien in die LFS-Verwaltung konvertiert wurden. Überprüfen Sie, ob Auslassungen vorliegen


Zu diesem Zeitpunkt wird die .gitattributes-Datei angezeigt, unabhängig davon, in welchem ​​Zweig Sie sich befinden, und es werden Inhalte ähnlich dem folgenden hinzugefügt. Lernen Sie in zehn Minuten die GIT Warehouse-Verschlankung und die GIT LFS-Migrationsanweisungen

*.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
Gleichzeitig können Sie sehen, dass alle unsere Binärdateien in die folgende Textform konvertiert wurden

version https://git-lfs.github.com/spec/v1
oid sha256:9171c8350d72ccca6ad60ac80b577157ad1f9fd44ca05744216e02ccbfcdf491
size 10260
Bestätigen Sie, dass sie korrekt sind, und können Sie sie dann an das entfernte Ende übertragen;

Seit der Migration von lfs schreibt alle Commits neu und ändert den Hash-Wert, daher müssen wir –froce hinzufügen. Dieser Schritt erfordert das Abbrechen des geschützten Zweigs (geschützte Zweige können nicht -f sein).

git push --force --all

Auf diese Weise ist die LFS-Migration des Remote-Warehouse abgeschlossen

迁移一些补充说明

  1. 迁移者的本地仓库lfs文件转源文件:经过以上步骤,由于我们将所有文件都已经转成文件指针,我们需要将文件下载回来才能正常使用该仓库。
    需要注意,其他人重新clone 或者同步 lfs迁移过的remote仓库 是不需要该步,只针对迁移作者本地的仓库。
git lfs pull
  1. 团队中其他成员迁移前的本地仓库同步: 由于远程仓库的历史已经被全部重写,所以无法直接同步,最好是删除本地分支,重新拉取远程分支,如果本地已经有部分commit需要提交,可以重名本地分支,拉取远程再做cherry pick。git tag 同理,删除迁移前的tag。
  2. 本地仓库清理:上面的迁移成功将二进制文件迁移成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来说理论仍会有性能提升,但是可能感知不强。
Lernen Sie in zehn Minuten die GIT Warehouse-Verschlankung und die GIT LFS-Migrationsanweisungen

推荐学习:《Git教程

Das obige ist der detaillierte Inhalt vonLernen Sie in zehn Minuten die GIT Warehouse-Verschlankung und die GIT LFS-Migrationsanweisungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:CSDN. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Git und Github: Wie ist die Beziehung?Git und Github: Wie ist die Beziehung?Apr 14, 2025 am 12:10 AM

Git und GitHub sind verschiedene Tools: Git ist Software für die Versionskontrolle, und GitHub ist eine Online -Plattform, die auf Git basiert. 1.Git ermöglicht es Ihnen, Dateiänderungen und kollaborative Entwicklung zu verfolgen. 2. GitHub bietet Tools für Code -Hosting und Zusammenarbeit, um die Effizienz der Teamentwicklung zu verbessern.

Github: Die Plattform für Entwickler und ProjekteGithub: Die Plattform für Entwickler und ProjekteApr 13, 2025 am 12:01 AM

Zu den Kernfunktionen von GitHub gehören Versionskontrolle, Filialleiter, Code -Überprüfung, Problemverfolgung und Projektmanagement. 1. Die Versionskontrolle und das Zweigmanagement basieren auf Git, wodurch die Verfolgung von Codeänderungen und die experimentelle Entwicklung ermöglicht werden. 2. Die Code -Überprüfung wird über PullRequest implementiert, um die Codequalität und die Zusammenarbeit der Teams zu verbessern. 3. Issues tracking and project management are carried out through Issues and the project management board to improve project transparency and traceability.

Github in Aktion: Beispiele und AnwendungsfälleGithub in Aktion: Beispiele und AnwendungsfälleApr 12, 2025 am 12:16 AM

GitHub ist ein leistungsstarkes Instrument zur Verbesserung der Effizienz und Qualität der Softwareentwicklung. 1) Versionskontrolle: Verwalten Sie Codeänderungen über Git. 2) PullRequests: Durchführen von Code -Überprüfung und Verbesserung der Codequalität. 3) Probleme: Verfolgen Sie Fehler und Projektfortschritte. 4) GitHubactions: Automatisieren Sie den Konstruktions-, Test- und Bereitstellungsprozess.

Git vs. GitHub: Versionskontrolle und Code -HostingGit vs. GitHub: Versionskontrolle und Code -HostingApr 11, 2025 am 11:33 AM

Git ist ein Versionskontrollsystem, und GitHub ist eine GIT-basierte Code-Hosting-Plattform. Git wird verwendet, um Codeversionen zu verwalten und unterstützt lokale Operationen. GitHub bietet Online -Zusammenarbeitstools wie das Problem mit der Ausgabe und PullRequest.

Was ist Git in einfachen Worten?Was ist Git in einfachen Worten?Apr 09, 2025 am 12:12 AM

Git ist ein Open -Source -Distributed -Versionskontrollsystem, mit dem Entwickler die Änderungen der Dateien verfolgen, zusammenarbeiten und Codeversionen verwalten können. Zu den Kernfunktionen gehören: 1) Modifikationen auf Datensätze, 2) Fallback in frühere Versionen, 3) kollaborative Entwicklung und 4) Niederlassungen für parallele Entwicklung erstellen und verwalten.

Ist Git das gleiche wie GitHub?Ist Git das gleiche wie GitHub?Apr 08, 2025 am 12:13 AM

Git und Github sind nicht dasselbe. Git ist ein Versionskontrollsystem, und GitHub ist eine GIT-basierte Code-Hosting-Plattform. Git wird verwendet, um Codeversionen zu verwalten, und GitHub bietet eine Online -Zusammenarbeit.

Wie benutze ich GitHub für HTML?Wie benutze ich GitHub für HTML?Apr 07, 2025 am 12:13 AM

Der Grund für die Verwendung von GitHub zur Verwaltung von HTML -Projekten ist, dass es eine Plattform für die Versionskontrolle, die kollaborative Entwicklung und die Präsentation von Werken bietet. Zu den spezifischen Schritten gehören: 1. Erstellen und initialisieren Sie das Git -Repository, 2. HTML -Dateien hinzufügen und senden. Darüber hinaus unterstützt GitHub auch Funktionen für die Code -Überprüfung, Ausgabe und PullRequest, um HTML -Projekte zu optimieren und zusammenzuarbeiten.

Soll ich mit Git oder GitHub beginnen?Soll ich mit Git oder GitHub beginnen?Apr 06, 2025 am 12:09 AM

Ausgehend von Git eignet sich besser für ein tiefes Verständnis der Prinzipien der Versionskontrolle. Ausgehend von GitHub eignet sich besser für die Konzentration auf Zusammenarbeit und Code -Hosting. 1.Git ist ein verteiltes Versionskontrollsystem, mit dem die Code -Versionsverlauf verwaltet wird. 2. GitHub ist eine Online -Plattform, die auf Git basiert und die Funktionen für Code -Hosting und Kollaboration bietet.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.