Git steckt in der Phase zum Auspacken von Objekten fest

77

Ich versuche, ein git pullvon einem Remote-Repository in Github auf einen lokalen Computer zu übertragen ... aber Git bleibt zu 70% in der Phase "Objekte entpacken" stecken, ohne dass es Anzeichen dafür gibt, dass ich irgendwohin gehe ohne Änderung)

Irgendwelche Vorschläge zur Behebung dieses Problems?

Ist es möglich, git anzuweisen, nur die neueste Festschreibung / Version aus dem Remote-Repository ohne alle Zwischenzustände herunterzuladen?

Gadgad
quelle
Auch wenn Sie ssh verwenden, versuchen Sie es mit stackoverflow.com/questions/6842687/… , nur für den Fall.
VonC
Es ist wahrscheinlicher, dass der Host auflegt, vielleicht könnten Sie es versuchen git clone --depth 1. Eine bessere Internetverbindung ist sehr hilfreich, z. B. ist das Klonen eines Github-Repos auf einem Rackspace-Server meiner Erfahrung nach schnell (daher befinden Sie sich in derselben Infrastruktur und github.comServer befinden sich möglicherweise in der Nähe).
Fehlerentwickler
Übertragen Sie keine Binärdateien an git. Git dient ausschließlich der Versionskontrolle.
Greg
Ich lösche das Repository und klone es erneut. Es hat mir geholfen.
Gleb Belyaev

Antworten:

56

Ich hatte das gleiche Problem, als ich ein Repository auf github.com zog. Ich fand, dass es einige große Dateien gab und die Verbindung zu Github langsam war. Vielleicht müssen Sie nur geduldig warten, bevor git das gesamte Repository abruft.

Ernest
quelle
16
Dieser Kommentar + Geduld hat mir geholfen
Coty Embry
+ einige Male wiederholen, bis die Bandbreite zufällig ist. (Nein, ich bereue immer noch nicht meine etwas langsamere, aber nicht Con-Cast ISP Wahl ...)
Ijoseph
Ja, das liegt daran, dass einige Dateien groß sind. Wenn jemand nicht genug Geduld hat, um zu warten, kann das Herunterladen der ZIP-Version des Repos hilfreich sein
Programmer Dancuk
14

Für mich war die Lösung Protokollspezifikation von https zu git zu ändern, zB:
git clone https://github.com/some/repository
zu
git clone git://github.com/some/repository

Bearbeiten:
Hier ist etwas über die in Git verwendeten Protokolle .
Einige Highlights:
Der Nachteil des Git-Protokolls ist die fehlende Authentifizierung.
Außerdem ist ein Firewall-Zugriff auf Port 9418 erforderlich, der kein Standardport ist, den Unternehmensfirewalls immer zulassen

Al Lelopath
quelle
Ich denke, das https funktioniert nicht, weil ich mich hinter einer Firewall befinde. Warum Git funktioniert, kann ich nicht sagen.
Al Lelopath
4

Ich finde, dass große binäre Objekte (wie Adobe Illustrator-Dateien usw.) dazu neigen, den gesamten Pull / Push-Prozess ebenfalls zu blockieren.

Aus diesem Grund verwende ich jetzt gerne zwei Repositorys für Design vs. Code.

Evan Stone
quelle
Zum ersten Mal in der Auspackphase stecken. Dann stelle ich fest, dass ich zwei PDF-Dateien im GitHub-Repository habe. Ich frage mich ...
Atlas7
0

[...] aber git bleibt zu 70% in der " Unpacking objects" Phase stecken , ohne Anzeichen dafür, irgendwohin zu gehen

Mit Git 2.25 (Q1 2020) wurde " git unpack-objects" verwendet, um den Fortschritt nur basierend auf der Anzahl der empfangenen und entpackten Objekte anzuzeigen, die ins Stocken geraten sind, wenn ein ungewöhnlich großes Objekt verarbeitet werden muss.

Es zeigt jetzt auch den Durchsatz an .

Siehe commit bae60ba (19. November 2019) von SZEDER Gábor ( szeder) .
(Zusammengeführt von Junio ​​C Hamano - gitster- in Commit cf91c31 , 05. Dezember 2019)

builtin/unpack-objects.c: Durchsatzfortschritt anzeigen

Unterzeichnet von: SZEDER Gábor

'git entpacken-Objekte' zeigt eine Fortschrittszeile, die nur die Anzahl der entpackten Objekte zählt. Wenn also einige der empfangenen Objekte ungewöhnlich groß sind, scheint dieser Fortschritt während der Verarbeitung eines so größeren Objekts eingefroren zu sein.

Ich starrte nur über eine halbe Minute lang auf eine scheinbar festgefahrene Fortschrittslinie, während ' git fetch' damit beschäftigt war, eine Packung mit nur ein paar Objekten (dh weniger als ' fetch.unpackLimit') zu erhalten, von denen eines über 80 MB groß war.

Zeigen Sie den Durchsatz in der git unpack-objectsFortschrittszeile an, damit wir zeigen, dass auch beim Empfangen und Verarbeiten eines großen Objekts etwas los ist.

Das Zählen der verbrauchten Bytes ist weit entfernt von dem Ort, an dem Objekte gezählt und der Fortschritt angezeigt werden. Um die ' struct progress' Instanz zu umgehen, müssten wir die Signatur von fünf Funktionen und 14 ihrer Aufrufseiten ändern: Dies ist einfach zu viel Abwanderung Machen Sie den Dateibereich lieber statisch.

' git index-pack', dh der nicht entpackende Cousin von ' git unpack-objects' enthält bereits den Durchsatz in seiner Fortschrittszeile und verwendet auch eine statische ' struct progress' Instanz im Dateibereich .

VonC
quelle