Git, fatal: Das Remote-Ende hat unerwartet aufgelegt

275

Als ich versuchte zu rennen

git push origin master --force

Ich habe gerade bekommen

Counting objects: 2649, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (1280/1280), done.
error: RPC failed; result=22, HTTP code = 413 | 116 KiB/s   
fatal: The remote end hung up unexpectedly
Writing objects: 100% (2504/2504), 449.61 MiB | 4.19 MiB/s, done.
Total 2504 (delta 1309), reused 2242 (delta 1216)
fatal: The remote end hung up unexpectedly
Everything up-to-date

Hat das etwas damit zu tun, dass man nicht sicher ist? Ich habe versucht, einen öffentlichen Schlüssel wie in der Antwort für Fatal zu erstellen : Das Remote-Ende hat unerwartet aufgelegt und ihn erneut ausgeführt, aber es funktioniert immer noch nicht. Benutze ich den Schlüssel nicht wirklich? Wenn ja, wie verwende ich es?

DanielLC
quelle
Bitte zeigen Sie die Ausgabe vongit remote -v
CharlesB
13
git config http.postBuffer 524288000 # es funktioniert für mich
Hari Das
wenn Sie erhalten error: could not lock config file .git/config: No such file or directorysehen stackoverflow.com/a/32329453/827525
niksmac
1
Ich konnte keine der vorgeschlagenen Lösungen zum Laufen bringen. Dann habe ich GitKraken ausprobiert. Es ist eines der wenigen Git-Programme, die git.exe nicht verwenden. GitKraken könnte es schaffen. Nachdem GitKraken das Repository verschoben hatte, konnte ich wieder zu git.exe wechseln und ohne Probleme synchronisieren.
Lars Pehrsson

Antworten:

83

Das sieht ähnlich wie Wie kann ich Github zu ssh auf Standard und nicht https für neue Repositories . Wahrscheinlich lohnt es sich, vom http-Protokoll zum ssh zu wechseln:

$ git remote add origin [email protected]:username/project.git
Vitalliuss
quelle
Warum kann ich nicht einfach von http zu https wechseln?
DanielLC
10
bash-3.2 $ git remote add origin [email protected]: xxx / xx.git fatal: remote origin existiert bereits. WARUM ?
Almaruf
11
@almaruf liegt es daran, dass die Fernbedienung originbereits vorhanden ist und Sie versuchen, sie zu ersetzen. git erlaubt das nicht. Sie müssen es also zuerst git remote rm originversuchen und dann erneut versuchen. Es würde funktionieren
Alfie
Stellen Sie sicher, dass Sie das Projekt initialisieren, wenn es ein neuer frischer Klon mitgit init
Raul
Sie können entweder das Git-Protokoll über SSH (für das SSH-Schlüssel erforderlich sind) oder das https-Protokoll verwenden, für das Benutzername und Kennwort über ein persönliches Zugriffstoken erforderlich sind - ich bevorzuge das spätere
Raul
519

Das Problem ist auf die Einstellungen des Git / https-Puffers zurückzuführen. Um es zu lösen (von Git übernommen schlägt fehl, wenn Commit auf Github gedrückt wird )

git config http.postBuffer 524288000

Führen Sie den Befehl erneut aus

Roman M.
quelle
4
Ich brauche einen Puffer, der höher als 500 MB ist - ist das möglich? Es scheint keinen Unterschied zu machen, wenn ich die PostBuffer-Nummer höher
mache
Vielen Dank für den Link - ich habe das Problem behoben, indem ich den Push in kleinere Teile aufgeteilt habe. Wenn ich wieder ein Problem habe, weiß ich, wo ich suchen muss!
Jowie
17
Wäre es eine gute Idee, dies mit zu verwenden --global? Ich beschäftige mich regelmäßig mit großen Repositories.
DaAwesomeP
2
@ shivam13juna nichts wird jemals aus dem Internet gelöscht: :) web.archive.org/web/20170119225336/http://github.com/gitlabhq/…
Roman M
3
Ich habe "git config http.postBuffer 524288000" ausgeführt, aber das Problem wurde immer noch nicht behoben. Es wurde immer noch dasselbe gesagt. Das Remote-Ende legte unerwartet auf
Narendra
80

Ursache: Die Standardgröße für Dateipost für Git wurde überschritten.

Lösung:

Navigieren Sie zum Repo.

Führen Sie den folgenden Befehl aus, um den Puffer nach dem Navigieren zum Repository auf 500 MB zu erhöhen:

git config http.postBuffer 524288000
Chinu
quelle
2
Bitte formatieren Sie Ihren Code mit den Code-Tags. Erklären Sie auch, was der Code tut, da dies ein alter Beitrag ist. Machen Sie Ihre Antwort so gut wie möglich.
Dan Grahn
31
Sie können auch verwenden, git config ssh.postBuffer 524288000wenn Sie über ssh anstelle von http posten.
John M
In einigen Fällengit config --global http.postBuffer 100000000
Job M
Ich bekomme 'fatal: not in a git directory' nach Ausführung dieses Befehls
ka3ak
@JohnM Diese Option scheint nicht zu existieren, sie ist nicht in der Manpage oder in git-scm.com/docs/git-config
Nobody
29

Möglicherweise wird ein solcher Fehler angezeigt

Fehler: Konfigurationsdatei konnte nicht gesperrt werden .git / config: Keine solche Datei oder kein solches Verzeichnis

Das liegt daran, dass Sie keine lokale .git/configDatei haben. Mit diesem Befehl können Sie sie zum Laufen bringen

git config --global http.postBuffer 524288000

niksmac
quelle
Dies half mir beim Versuch, auf einem sehr langsamen PC in Cygwin zu klonen - es blieb weiterhin aufgelegt - bis ich diesen Befehl benutzte
serup
Dies hilft mir, das Problem "Schwerwiegend: Das Remote-Ende hat beim ersten Kontakt aufgelegt" zu beheben.
Karthic.K
15

Andere Lösungen haben in meinem Fall nicht funktioniert. Eine Speicherbereinigung hat dies für mich behoben:

git gc --aggressive

Shameen
quelle
21
Dies hat mein Problem behoben, aber es hat auch die abgelösten HEAD-Änderungen in einen Zustand gebracht, in dem das Zusammenführen unangenehm wurde (alles wurde in ein ADD konvertiert). Ich wünschte, ich hätte dies noch einmal recherchiert, bevor ich es ausgeführt habe.
MatrixManAtYrService
Wie macht das Problem?
Annadate Piyush
9

Im Gegensatz zu einer der anderen Antworten - ich hatte das Problem beim Push mit ssh - wechselte ich zu https und es wurde behoben.

git remote remove origin
git remote add origin https://github..com/user/repo
git push --set-upstream origin master
MikeB
quelle
8

Dieser Fehler kann auch durch fehlende Schreibberechtigungen im Repository ausgelöst werden .


Mein konkreter Fall ging so:

  1. Ich habe ein Repo mit dem erstellt root Benutzer meines Servers (über SSH).
  2. Ich habe einen Git-Dienst installiert und einen gitLinux-Benutzer erstellt, der alle git-bezogenen Aktionen verwalten soll.
  3. Zu diesem Zeitpunkt hatte ich vergessen, dass das Repo rootin erster Linie mit dem Benutzer erstellt wurde und der gitBenutzer einfach nicht über die Dateiberechtigungen verfügte, um etwas in das Repository zu schreiben.
Loilo
quelle
4

Täter (in meinem Fall):
Ein Netzwerk mit hoher Latenz.

Dies ist keine Antwort an sich, sondern eher eine Beobachtung, die anderen helfen kann. Ich habe festgestellt, dass dieser Fehler gelegentlich in Netzwerken mit hoher Latenz auftritt (ich muss beispielsweise eine Satellitenschüssel für den Internetzugang verwenden). Die Geschwindigkeit des Netzwerks ist in Ordnung, aber die Latenz kann hoch sein. Hinweis: Das Problem tritt nur in bestimmten Szenarien auf, aber ich habe das Muster nicht ermittelt.

Vorübergehende Schadensbegrenzung:
Ich habe das Netzwerk gewechselt - ich bin zu einem Mobilfunknetz mit langsamerer Latenz gewechselt (mein Telefon wurde als Hotspot verwendet) - und das Problem ist verschwunden. Beachten Sie, dass ich dies nur zeitweise tun kann, da meine Zellenverbindung auch zeitweise ist. Plus die Bandbreitennutzung erhöht die Kosten. Ich bin auch glücklich, dass mir diese Option zur Verfügung steht. Nicht jeder tut es.

Ich bin mir sicher, dass es irgendwo eine Konfigurationseinstellung gibt, die git - oder ssh oder curl oder was auch immer zuerst abläuft - toleranter gegenüber solchen Netzwerken macht, aber ich weiß nicht, was es ist.

Ein Plädoyer für Entwickler:
Diese Art von Problemen ist ein ständiges Problem für die ländliche Bevölkerung. Denken Sie bitte an uns, wenn Sie Ihre Systeme, Tools und Anwendungen entwerfen. Danke dir.

t0dd
quelle
3

In unserem Fall war das Problem ein Klon, der eine .git/configDatei schrieb , die einen URL-Eintrag enthielt, der eine schreibgeschützte Zugriffsmethode war. Das Ändern der URL von der ://Methode zur @Methode hat das Problem behoben.

Laufen git remote -vbeleuchtete das Problem einige.

Frank P.
quelle
3

Wenn Sie git für Windows verwenden (und dies wahrscheinlich auch auf einem Windows-Computer tun) und keine der anderen Korrekturen hier für Sie funktioniert hat, gehen Sie zu https://github.com/git-for- Windows / Git / Releases und Abrufen einer Version auf oder nach Version 2.4.5. Das Problem wurde für mich behoben.

rrreee
quelle
3

Sie haben wahrscheinlich das Repository in ein vorhandenes geklont. Um das Problem zu lösen, können Sie das Repository einfach in ein anderes Verzeichnis klonen und die Änderungen in dieses neue Verzeichnis replizieren und dann den Push ausführen.

Marcos Bahiense
quelle
Wir haben einen Beta-ansible-Workflow und die Neuerstellung der Site hat genau dies verursacht, indem das Repo über das andere geklont wurde. Ansible Sache zu beheben, aber ein Git-Problem. Danke :-)
Alejandro Moreno
2

Ein weiterer Zusatz, da ich auf diesen Fehler anders gestoßen bin und Google mich hierher gebracht hat.

Mein Problem war ein Missverhältnis der Fälle; ein camelCase und einer nicht. Anscheinend hält GIT Sie davon ab, ohne Ihnen zu sagen, warum. Wenn sich Ihre Zweige nur in der Großschreibung von der Fernbedienung unterscheiden, versuchen Sie, sie so zu ändern, dass sie identisch sind.

Siehe: Git: 'Master kann nicht zum Verzweigen aufgelöst werden' nach dem Zusammenführen

Thomas
quelle
Ich dachte, ich hätte alle relevanten Informationen aufgenommen - dies ist auf eine Fallinkongruenz zurückzuführen. Ich habe einen Satz hinzugefügt, um genauer zu sein, aber hier geht es nicht wirklich um den Link. Entschuldigung, wenn das nicht klar war.
Thomas
2

Dies kann nach dem Aktualisieren Ihrer OSX-Plattform auftreten.

Öffnen Sie Terminal, navigieren Sie zu Ihrem .ssh-Ordner und geben Sie ein ssh-add -K ~/.ssh/id_rsa

cptstarling
quelle
2

PLESK Nginx und GIT Ich habe diesen Fehler auf plesk git erhalten und als ich ein großes Repo mit (wer weiß was) gepusht habe, habe ich diesen Fehler mit HTTP-Code 413 erhalten Also habe ich in Protokolle geschaut und den Fehler in Nginx-Protokollen gefunden

Folgen Sie diesem Link , damit plesk die Konfiguration mit einem größeren Datei-Upload neu erstellen kann.

Ich habe den PHP-Teil für Git übersprungen

Danach funktionierte Git Push ohne Fehler.

Farrukh Subhani
quelle
1

Ich hatte zufällig den gleichen Fehler beim Ziehen.
Ich habe den Trick "http.postBuffer" gemacht. Es löste es, aber als ich pushen wollte, stieß ich erneut auf den Fehler.

Was mein Problem gelöst hat:
1. Klont es in einen anderen Ordner mit einer anderen virtuellen Maschine. (Linux).
2. Ich habe meine Änderungen vorgenommen.
3. Pushed es mit der ursprünglichen virtuellen Maschine, wo ich anfänglich nicht pushen konnte. (Windows)

nopara73
quelle
Dies ist keine Lösung Kumpel!
Behrouz.M
2
Ich weiß, dass dies keine ideale Lösung ist, aber es hat das Problem in meinem Fall gelöst. Es kann immer noch lebensrettend sein, wenn alle anderen Antworten fehlschlagen, wie in meinem Fall.
Nopara73
1

Ich habe diesen Fehler erhalten, als ich ein falsches Schlüsselpaar in .ssh hatte. Das Hinzufügen des Pubkeys zu Github (in den Einstellungen) hat dieses Problem für mich behoben.

Michel Samia
quelle
1

Ich habe das gleiche Problem. Ich habe auf der Git-Webseite festgestellt, dass die SSH-Klon-URL die nächste Struktur hat:

[email protected]:user/project.git

Ich könnte mein Problem lösen, indem ich das ":" durch "/" wie folgt ändere:

[email protected]/user/project.git

Möglicherweise kann dies hilfreich sein.

David Romero
quelle
1

Es scheint fast sinnlos, eine Antwort hinzuzufügen, aber ich habe lange dagegen gekämpft, als ich schließlich entdeckte, dass es sich bei Visual Studio Online um einen sporadischen Ausfall handelte. Dies wurde deutlich, als VS immer wieder nach Creds fragte und die VSO-Website manchmal 500 gab.

Counting objects: 138816, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (38049/38049), done.
error: unable to rewind rpc post data - try increasing http.postBuffer
error: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054
The remote end hung up unexpectedly/138816), 33.30 MiB | 3.00 KiB/s
Writing objects: 100% (138816/138816), 50.21 MiB | 3.00 KiB/s, done.
Total 138816 (delta 100197), reused 134574 (delta 96515)
fatal: The remote end hung up unexpectedly
Everything up-to-date

Ich habe meinen HTTP-Post-Puffer danach wieder auf 2 MB gesetzt, da ich denke, dass er mit vielen kleineren Posts besser funktioniert.

Luke

Luke Puplett
quelle
1

Scheint, als könnte es eines von tausend Dingen sein.

Für mich war es zunächst ein Push für Master und Entwicklung (Master hatte keine Änderungen) über SourceTree. Das Ändern, um zu entwickeln, hat nur funktioniert.

JakeSteam
quelle
1

Ich hatte einen ähnlichen Fehler beim Hochladen eines großen Repos "fatal: Das Remote-Ende hat unerwartet aufgelegt", ohne weitere Details.

Nach vielen Recherchen habe ich Folgendes getan:

  • Die Verwendung von SSH anstelle von HTTPS hat das Problem nicht gelöst.
  • Das schrittweise Erhöhen von http.postBuffer auf einen sehr großen Wert, immer noch kein Glück.
  • Ich habe herausgefunden, dass dies möglicherweise an großen Dateien im Repo liegt (da dies ein neu migriertes Repo von perforce ist), also habe ich das Repo mit LFS neu erstellt und largeFileThreshold auf 40 m festgelegt, wodurch die Repo-Größe erheblich reduziert wurde (von 3,5 G auf 500 M). Ich dachte, dies würde das Problem lösen, aber zu meiner Überraschung hatte ich immer noch den gleichen Fehler.

Schließlich kam mir der Gedanke, dass ich möglicherweise einen älteren Git-Client verwende, da ich keine zusätzlichen Fehlermeldungen sah. Ich habe den Git-Client auf den neuesten Stand (2.20.1) aktualisiert und voila, der Fehler ist weg!

Mahmoud Hanafy
quelle
Ich hatte auch genau dieses Problem (Migration von TFS). Ich habe ein Upgrade von 2.19 auf 2.20 durchgeführt und es wurde behoben. Ein flüchtiger Blick durch die Versionshinweise enthüllte jedoch nicht, was das Problem gewesen sein könnte.
George Richardson
Ich habe gerade auf 2.20.1.windows.1 aktualisiert und es lässt mich immer noch nicht zum Remote-Repository pushen
Vidar
@Vidar Möglicherweise wird nach großen Dateien gesucht. GitHub hat ein striktes Limit von 100 MB . Help.github.com/articles/what-is-my-disk-quota ; Weitere Informationen finden Sie im Abschnitt "Manuelles Überprüfen großer Dateien in Ihrem Repository" unter konfluenz.atlassian.com/bitbucket/… . Die Seite selbst ist eine gute Lektüre.
Mahmoud Hanafy
@MahmoudHanafy - danke - es war ein Parameter in der web.config über die maximale Dateigröße - erhöhen Sie das und Git verhält sich und jeder ist glücklich! Es ist nicht GitHub für mich, sondern unser privater Bonobo.Git.Server vor Ort.
Vidar
0

Ich habe diesen Fehler erhalten, als ich meinen Namen für den Remote-Zweig falsch geschrieben habe

javaProgrammer
quelle
0

Ich konnte dieses Problem mit Git Shell umgehen.

Jedes Repository in github.com enthält HTTPS / SSH / Subversion-URLs, die Sie zum Herunterladen mit Shell verwenden können. Weitere Informationen finden Sie hier: http://prntscr.com/8ydguv .
Basierend auf den jüngsten Änderungen von GitHub scheint SSH die beste Methode zu sein.

Befehl zur Verwendung in Shell:

git clone "URL of repo goes here w/ no quotes"
David
quelle
Was meinst du mit "Git Shell"? Die Verwendung gitin einem Terminal?
Karl Richter
0

Führen Sie dies aus, um den von Ihnen verwendeten Schlüssel anzuzeigen. ssh -vT [email protected]

Stellen Sie dann sicher, dass Sie diesen Lauf in Ihrem Build zu Beginn haben. eval "$ (ssh-agent -s)" ssh-add ~ / .ssh / id_rsa

ddtraveller
quelle
0

1) CD zum Projektverzeichnis

2) git status

3) git checkout -f HEAD

4) Bestätigen Sie den Erfolg, indem Sie den Master erneut herunterziehen, um sicherzustellen, dass Sie auf dem neuesten Stand sind, wenn Ihr Repo unvollständig aussieht

Dies funktioniert, wenn Sie beim Klonen eines Repos von Bitbucket den fraglichen Fehler von Visual Studios Git erhalten

Whyoz
quelle
0

Dies kann auch passieren, wenn eines der Commits, die Sie ausführen, fehlerhaft ist.

Ich hatte (unwissentlich) ein Commit mit einem fehlerhaften Autoren-E-Mail-Feld, aber alles, was ich bekam, war diese vage remote end hung upFehlermeldung. Ich war in der Lage, andere Zweige zu pushen, nur nicht diesen einen Zweig, also fing ich an, Commits von dem "schlechten" Zweig einzeln zu pushen, bis ich schließlich landete bei:

Pushing to [email protected]:directangular/unicorn.git
Counting objects: 100% (9/9), done.
Delta compression using up to 20 threads
Writing objects: 100% (5/5), 549 bytes | 549.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: error: object 74c7584ff0b93591c19d3a3c19695889dd2274d2: badEmail: invalid author/committer line - bad email        
remote: fatal: fsck error in packed object        
error: remote unpack failed: index-pack abnormal exit
To github.com:directangular/unicorn.git
 ! [remote rejected]       pizzafeast -> pizzafeast (failed)
error: failed to push some refs to '[email protected]:directangular/unicorn.git'

So sieht es aus wie die remote end hung up unexpectedly Fehler die eigentliche Fehlermeldung "verschlucken", was wahrscheinlich eine Art fehlerhaftes Commit ist, wie ich es hier habe.

Nachdem ich die fehlerhafte E-Mail behoben hatte, konnte ich ganz gut pushen.

mgalgs
quelle
0

Ich denke nicht, dass es eine gute Idee ist, das zu tun, aber wenn Sie ein Backup in Ihrem Computer haben ... drücken Sie noch einmal und versuchen Sie dann, Repo zu klonen und entfernen Sie dann .git aus dem alten Verzeichnis und verschieben Sie .git aus dem neuen geklonten Ordner. Git ist gelöst Aufgrund des Problems werden einige Dateien möglicherweise nicht bei git hochgeladen. Schieben Sie alles erneut von Ihrem Backup nach oben und ziehen Sie es dann zu Ihrem Server oder dem anderen Computer, auf dem es beschädigt wird. Im Moment habe ich nur das getan ... Funktioniert für mich ... und mache ein Backup deines Verzeichnisses, bevor ich das mache.

Und bitte korrigieren Sie mich, wenn ich falsch liege. Ich weiß auch nicht, was danach schief gehen kann? Aber diesmal funktioniert es wirklich.

Sumit Rawat
quelle
0

Mein Problem (schwerwiegend: Das Remote-Ende wurde unerwartet aufgelegt) wurde behoben, indem die Berechtigung und der Eigentümer des Repositorys überprüft wurden.

Der Eigentümer der Git-Repository-Dateien muss der Benutzer sein, mit dem Sie Push / Pull / Clone ausführen möchten.

Samir Sayyad
quelle
0

Keine der oben genannten Antworten hat bei mir funktioniert, aber hier ist, was getan hat.

1) Löschen Sie .git/aus Ihrem Projekt.
2) Klonen Sie das Remote-Repo an einen neuen Ort wie Ihren Desktop. git clone https://github.com/foo/bar.git
3) Wechseln Sie .git/vom neuen Standort zum alten Standort.
4) Legen Sie Ihre Änderungen erneut fest und übertragen Sie sie

Ben
quelle
0

Die Hauptursache für mich waren die Netzwerkeinstellungen: Ich habe eine "Killer" -Wifi-Karte, die anscheinend mit Netzwerkpaketen auf eine Weise Mist macht, die SSH und SSL nicht mögen.

Um das Problem zu beheben, musste ich in "Killer Control Center", "Parameters" und "Advanced Stream Detect" deaktivieren - Git-Befehle funktionierten sofort wieder.

Jean-Michaël Celerier
quelle