Heim  >  Artikel  >  Entwicklungswerkzeuge  >  Mit dieser Technik kann das Klonen von Git um ein Vielfaches beschleunigt werden!

Mit dieser Technik kann das Klonen von Git um ein Vielfaches beschleunigt werden!

藏色散人
藏色散人nach vorne
2021-12-20 15:11:213154Durchsuche

Ich weiß nicht, ob Sie jemals auf ein relativ großes Projekt gestoßen sind, bei dem das Klonen von Git sehr langsam ist oder sogar fehlschlägt. Wie werden alle damit umgehen?

Vielleicht erwägen Sie den Wechsel zu einer anderen Download-Quelle und verwenden möglicherweise Mittel, um die Internetgeschwindigkeit zu erhöhen. Aber was ist, wenn Sie all dies ausprobiert haben und es immer noch langsam ist?

Ich bin heute auf dieses Problem gestoßen. Ich musste den Typoskript-Code von Gitlab herunterladen, aber die Geschwindigkeit war sehr langsam:

git clone https://github.com/microsoft/TypeScript ts

Nachdem ich lange gewartet hatte, war der Download immer noch nicht abgeschlossen, also habe ich einen Parameter hinzugefügt:

git clone https://github.com/microsoft/TypeScript --depth=1 ts

Dies hat die Geschwindigkeit Dutzende Male verbessert, es wurde sofort heruntergeladen.

Durch das Hinzufügen von -- Depth wird nur ein Commit heruntergeladen, sodass der Inhalt viel geringer ist und die Geschwindigkeit steigt. [Verwandte Empfehlungen: Tutorial zur Git-Nutzung]

Und der heruntergeladene Inhalt kann weiterhin neue Commits übermitteln und neue Zweige erstellen. Es hat keinen Einfluss auf die spätere Entwicklung, Sie können jedoch nicht zu historischen Commits und historischen Zweigen wechseln.

Ich habe es zuerst mit einem meiner Projekte getestet:

Mit dieser Technik kann das Klonen von Git um ein Vielfaches beschleunigt werden!

und dann einige Änderungen vorgenommen. Danach können Git Add, Commit und Push normal übermittelt werden:

Mit dieser Technik kann das Klonen von Git um ein Vielfaches beschleunigt werden!

Mit dieser Technik kann das Klonen von Git um ein Vielfaches beschleunigt werden!

Neue Zweige erstellen können auch normal eingereicht werden. Der einzige Nachteil besteht darin, dass Sie nicht zu historischen Commits und historischen Zweigen wechseln können.

In manchen Szenarien ist es sehr nützlich: Wenn Sie zum historischen Zweig wechseln müssen, können Sie auch berechnen, wie viele Commits erforderlich sind, und dann die Tiefe angeben, was auch die Geschwindigkeit verbessern kann.

Haben Sie jemals darüber nachgedacht, warum das funktioniert? Git-Prinzip Alle zugehörigen Bäume und Blobs sind der Inhalt dieses Commits.

Commits stehen in Beziehung zueinander und Head, Branch, Tag usw. sind Hinweise auf bestimmte Commits. Zu sehen unter .git/refs. Auf diese Weise werden Konzepte wie Branches und Tags basierend auf Commit implementiert.
  • Git implementiert Versionsverwaltungs- und Zweigwechselfunktionen über diese drei Objekte. Alle Objekte sind unter .git/objects zu sehen.
  • So funktioniert Git.
  • Verstehen Sie hauptsächlich die drei Objekte Blob, Tree und Commit sowie Refs wie Head, Tag, Branch und Remote.
Das Prinzip, einen einzelnen Commit herunterladen zu können

Wir wissen, dass Git alle Objekte über einen bestimmten Commit als Einstiegspunkt verknüpft. Wenn wir also keinen Verlauf benötigen, können wir natürlich nur einen Commit herunterladen.

Mit dieser Technik kann das Klonen von Git um ein Vielfaches beschleunigt werden!

Auf diese Weise wird immer noch ein neuer Commit basierend auf diesem Commit erstellt und neue Blobs, Bäume usw. werden zugeordnet. Allerdings können die historischen Commits, Bäume und Blobs nicht zurückgeschaltet werden, da sie nicht heruntergeladen wurden, ebenso wenig wie die entsprechenden Tags, Zweige und anderen Zeiger. Auf diese Weise laden wir einen einzelnen Commit herunter, können aber trotzdem neue Branches, Commits usw. erstellen.

Zusammenfassung

Wenn Sie auf ein großes Git-Projekt stoßen, können Sie die Geschwindigkeit erheblich verbessern, indem Sie den Parameter -- Depth hinzufügen. Je mehr historische Commits vorhanden sind, desto größer ist die Verbesserung der Download-Geschwindigkeit.

Und das heruntergeladene Projekt kann weiterhin für die spätere Entwicklung entwickelt werden und es können neue Commits, neue Zweige und Tags erstellt werden, Sie können jedoch nicht zu historischen Commits, Zweigen und Tags wechseln.

Wir haben die Prinzipien von Git geklärt: Dateien und Übermittlungsinformationen werden über die drei Objekte Baum, Blob und Commit gespeichert, und Funktionen wie Zweige und Tags werden durch die Zuordnung zwischen Commits implementiert. Commit ist der Einstiegspunkt, der allen Bäumen und Blobs zugeordnet ist.

Wenn wir einen Commit herunterladen, laden wir alle zugehörigen Bäume, Blobs und einige Referenzen herunter (einschließlich Tags, Zweige usw.). Dies ist das Prinzip von -- Depth.

Mit dieser Technik kann das Klonen von Git um ein Vielfaches beschleunigt werden!Ich hoffe, Sie können diese Technik verwenden, um die Git-Klongeschwindigkeit großer Projekte zu verbessern, ohne auf historische Commits und Branches umsteigen zu müssen.

Das obige ist der detaillierte Inhalt vonMit dieser Technik kann das Klonen von Git um ein Vielfaches beschleunigt werden!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen