Git, fatale: l'estremità remota ha riattaccato inaspettatamente


278

Quando ho provato a correre

git push origin master --force

ho appena ottenuto

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

È qualcosa a che fare con il non essere sicuri? Ho provato a creare una chiave pubblica come nella risposta per Fatal: l'estremità remota ha riattaccato inaspettatamente e lo ha eseguito di nuovo, ma continua a non funzionare. In realtà non sto usando la chiave? In tal caso, come lo uso?


si prega di mostrare l'output digit remote -v
CharlesB


13
git config http.postBuffer 524288000 # funziona per me
Hari Das

se si ottiene error: could not lock config file .git/config: No such file or directoryvedere stackoverflow.com/a/32329453/827525
niksmac

1
Non sono riuscito a far funzionare nessuna delle soluzioni suggerite. Poi ho provato GitKraken. È uno dei pochi programmi Git che non utilizza git.exe. GitKraken potrebbe farlo. Dopo che GitKraken ha eseguito il push del repository ho potuto tornare a git.exe e sincronizzarlo senza problemi.
Lars Pehrsson,

Risposte:


83

Questo è simile a Come posso ottenere github di default su ssh e non https per i nuovi repository . Probabilmente vale la pena provare a passare dal protocollo http a ssh:

$ git remote add origin git@github.com:username/project.git

Perché non posso semplicemente passare da http a https?
DanielLC,

10
bash-3.2 $ git remoto aggiungi origine git@github.com: xxx / xx.git fatale: l'origine remota esiste già. PERCHÉ ?
Almaruf,

11
@almaruf è perché il telecomando originè già lì e stai cercando di sostituirlo. git non lo consente. Quindi devi prima fare, git remote rm originquindi riprovare. Funzionerebbe
Alfie

assicurati di inizializzare il progetto se si tratta di un nuovo clone nuovo congit init
Raul

puoi usare il protocollo git su ssh (che richiede chiavi ssh) o il protocollo https che richiede nome utente e password tramite un token di accesso personale - preferisco il successivo
Raul

521

Il problema è dovuto alle impostazioni del buffer git / https. Per risolverlo (preso da Git fallisce quando si spinge commit in github )

git config http.postBuffer 524288000

Ed esegui di nuovo il comando


4
Ho bisogno che il buffer sia superiore a 500 MB - è possibile? Non sembra fare la differenza se aumento il numero di PostBuffer ...
jowie,

Grazie per il link: ho risolto il problema suddividendo la spinta in blocchi più piccoli. Se ho di nuovo un problema, so dove cercare!
jowie,

17
Sarebbe una buona idea usarlo con --global? Mi occupo regolarmente di grandi repository.
DaAwesomeP,

2
@ shivam13juna nulla viene mai cancellato da Internet: :) web.archive.org/web/20170119225336/http://github.com/gitlabhq/…
Roman M

3
Ho eseguito "git config http.postBuffer 524288000", ma il problema non è stato ancora risolto, sempre dicendo lo stesso, la fine remota ha riattaccato inaspettatamente
Narendra

80

Causa: la dimensione del file post predefinita per Git è stata superata.

Soluzione:

Passare al repository.

Eseguire il comando seguente per aumentare il buffer a 500 MB dopo essere passati al repository:

git config http.postBuffer 524288000

2
Si prega di formattare il codice utilizzando i tag di codice. Spiega anche cosa fa il codice perché si tratta di un vecchio post, rendi la tua risposta il migliore possibile.
Dan Grahn,

31
Puoi anche usarlo git config ssh.postBuffer 524288000se invii tramite ssh invece di http.
John M,

Per alcuni casigit config --global http.postBuffer 100000000
Giobbe M

Ottengo 'fatale: non in una directory git' dopo l'esecuzione di questo comando
ka3ak il

@JohnM Questa opzione non sembra esistere, non è documentata nella pagina man o git-scm.com/docs/git-config
Nessuno il

29

Potresti ricevere un errore come questo

errore: impossibile bloccare il file di configurazione .git / config: nessun file o directory

questo perché non hai un .git/configfile locale Puoi farlo funzionare con questo comando

git config --global http.postBuffer 524288000


questo mi ha aiutato quando ho cercato di clonare su un PC molto lento all'interno di Cygwin - ha continuato a riagganciare e fino a quando ho usato questo comando
serup

Questo mi aiuta a risolvere il problema "fatale: l'estremità remota ha riattaccato al contatto iniziale".
Karthic.K,

15

Altre soluzioni non hanno funzionato nel mio caso, facendo una raccolta dei rifiuti risolto per me:

git gc --aggressive


21
Ciò ha risolto il mio problema, ma ha anche schiacciato i cambiamenti di HEAD distaccati in uno stato in cui la loro fusione è diventata odiosa (tutto è stato convertito in un ADD). Vorrei averlo ricercato ancora prima di eseguirlo.
MatrixManAtYrService

Come questo fa problema?
Annadate Piyush,

9

Contrariamente a una delle altre risposte - ho avuto il problema con push usando ssh - sono passato a https ed è stato risolto.

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

8

Questo errore può anche essere generato attraverso autorizzazioni di scrittura mancanti nel repository.


Il mio caso concreto è andato così:

  1. Ho creato un repository con l' rootutente del mio server (tramite SSH).
  2. Ho installato un servizio git e creato un gitutente Linux che dovrebbe gestire tutte le azioni relative a git.
  3. A quel punto, avevo dimenticato che il repository era stato creato con l' rootutente in primo luogo e l' gitutente semplicemente non aveva i permessi dei file per scrivere qualcosa nel repository.

4

Culprit (nel mio caso):
una rete ad alta latenza.

Questa non è una risposta in sé, ma piuttosto un'osservazione che può aiutare gli altri. Ho scoperto che questo errore si presenta occasionalmente su reti ad alta latenza (ad esempio, devo usare una parabola satellitare per l'accesso a Internet). La velocità della rete va bene, ma la latenza può essere elevata. Nota: il problema esiste solo in alcuni scenari, ma non ho determinato quale sia lo schema.

Mitigazione temporanea:
ho cambiato rete — sono passato a una rete cellulare a latenza più lenta, ma a bassa latenza (il mio telefono era usato come hotspot) —e il problema è scomparso. Nota che posso farlo solo in modo intermittente perché anche la mia connettività cellulare è intermittente. Inoltre l'utilizzo della larghezza di banda aggiunge costi. Sono anche fortunato ad avere questa opzione disponibile per me. Non tutti lo fanno.

Sono sicuro che ci sia qualche impostazione di configurazione da qualche parte che renda git — o ssh o curl o qualunque altro timeout prima — più tollerante di tali reti, ma non so di cosa si tratti.

Un appello agli sviluppatori:
questi tipi di problemi sono un problema costante per le popolazioni rurali. Pensa a noi quando progetti i tuoi sistemi, strumenti e applicazioni. Grazie.


3

Nel nostro caso, il problema era un clone che scriveva un .git/configfile che conteneva una voce url che era un metodo di accesso in sola lettura. La modifica dell'URL dal ://metodo al @metodo ha risolto il problema.

La corsa ha git remote -villuminato un po 'il problema.


3

Se stai usando git per Windows (e probabilmente lo sei, se lo stai facendo su un computer Windows), e nessuna delle altre correzioni qui ha funzionato per te, prova a visitare https://github.com/git-for- windows / git / release e ottenere una versione successiva o successiva alla versione 2.4.5. Risolto il problema per me.


3

Probabilmente hai clonato il repository in uno esistente, per risolvere il problema puoi semplicemente clonare il repository in un'altra directory e replicare le modifiche in questa nuova directory e quindi eseguire il push.


abbiamo un flusso di lavoro beta ansible e la ricostruzione del sito ha causato esattamente questo, clonando il repository sopra l'altro. Una cosa semplice da risolvere, ma che causa un problema git. Grazie :-)
Alejandro Moreno

2

Un'altra aggiunta, poiché ho riscontrato questo errore in un modo diverso e Google mi ha portato qui.

Il mio problema era una mancata corrispondenza del caso; un camelCase e uno no. Apparentemente, GIT ti impedisce di farlo senza dirti perché. Quindi se i tuoi rami sono diversi dal telecomando solo nella maiuscola, prova a cambiarli per essere identici.

Vedi: Git: 'Master non può essere risolto in diramazione' dopo l'unione


Pensavo di aver incluso tutte le informazioni pertinenti, a causa di una mancata corrispondenza del caso. Ho aggiunto una frase per essere più esplicito, ma non si tratta in realtà del collegamento. Scusa se non era chiaro.
Thomas,

2

Ciò può accadere dopo l'aggiornamento della piattaforma OSX.

Apri Terminale e vai alla tua cartella .ssh, ed entra ssh-add -K ~/.ssh/id_rsa


2

PLESK Nginx e GIT Stavo ottenendo questo errore su plesk git e mentre spingevo un grande repository con (chissà cosa) mi ha dato questo errore con il codice HTTP 413 e ho cercato nel seguente server Plesk e aveva nginx in esecuzione e apache2 così ho guardato nei registri e ho trovato l'errore nei registri nginx

Seguito questo link per consentire a plesk di ricostruire la configurazione con un caricamento di file più grande.

Ho saltato la parte php per git

Dopo quel git push ha funzionato senza errori.


1

Mi è capitato di avere lo stesso errore in pull.
Ho fatto il trucco "http.postBuffer". Lo ha risolto, ma quando volevo spingere, ho riscontrato di nuovo l'errore.

Cosa ha risolto il mio problema:
1. Clonato in un'altra cartella con un'altra macchina virtuale. (Linux).
2. Ho apportato le mie modifiche.
3. L'ho spinto con la macchina virtuale originale dove inizialmente non potevo spingere. (Finestre)


questa non è una soluzione amico!
Behrouz.M,

2
So che questa non è una soluzione ideale, ma ha risolto il problema nel mio caso. Può essere ancora salvavita quando tutte le altre risposte falliscono, come hanno fatto nel mio caso.
nopara73,

1

Ho avuto questo errore quando avevo una coppia di chiavi errata in .ssh. L'aggiunta del pubkey a github (nelle impostazioni) ha risolto questo problema per me.


1

Ho lo stesso problema. Ho notato dalla pagina web di git che l'URL del clone SSH ha la struttura seguente:

git@github.com:user/project.git

Potrei risolvere il mio problema semplicemente cambiando ":" con "/", come segue:

git@github.com/user/project.git

può essere questo può essere utile.


1

Sembra quasi inutile aggiungere una risposta, ma stavo combattendo da anni quando finalmente ho scoperto che era Visual Studio Online a soffrire di un'interruzione sporadica. Ciò è diventato evidente quando VS ha continuato a richiedere crediti e il sito Web VSO a volte ha dato un 500.

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

Successivamente ho ripristinato il mio buffer di post HTTP su 2 Mb, poiché in realtà penso che funzioni meglio con molti post più piccoli.

Luca


1

Sembra che possa essere una delle mille cose.

Per me, inizialmente stavo spingendo master e sviluppo (master non aveva modifiche) tramite SourceTree. Cambiare questo per sviluppare ha funzionato solo.


1

Ho riscontrato un errore simile durante il caricamento di un repository di grandi dimensioni, "fatale: l'estremità remota ha riattaccato inaspettatamente" senza ulteriori dettagli.

Dopo molte ricerche, ecco cosa ho fatto:

  • L'uso di SSH anziché HTTPS non ha risolto il problema.
  • Aumentare http.postBuffer in modo incrementale fino a un valore molto elevato, ancora senza fortuna.
  • Ho capito che potrebbe essere a causa di file di grandi dimensioni nel repository (poiché si tratta di un repository migrato di recente da perforce), quindi ho ricreato il repository utilizzando LFS, impostando largeFileThreshold a 40m, che ha ridotto notevolmente le dimensioni del repository (da 3,5G a 500M). Pensavo che questo potesse risolvere il problema, ma con mia grande sorpresa ho ancora affrontato lo stesso errore.

Alla fine, mi è venuto in mente che forse sto usando un vecchio client git, poiché non ho visto altri messaggi di errore. Ho aggiornato git client alla versione più recente (2.20.1) e voilà, l'errore è sparito!


Ho avuto anche questo problema esatto (migrando da TFS però). Ho aggiornato da 2.19 a 2.20 ed è stato risolto, uno sguardo superficiale attraverso le note di rilascio non ha rivelato quale potrebbe essere stato il problema.
George Richardson,

Ho appena effettuato l'aggiornamento a 2.20.1.windows.1 e non mi consente ancora di passare al repository remoto
Vidar

@Vidar Può essere verificato per file di grandi dimensioni, GitHub ha un limite rigoroso di 100 MB help.github.com/articles/what-is-my-disk-quota ; Dai un'occhiata alla sezione "Revisione manuale di file di grandi dimensioni nel tuo repository" in confluence.atlassian.com/bitbucket/… ; la pagina stessa è una buona lettura.
Mahmoud Hanafy,

@MahmoudHanafy - grazie - era un parametro nel web.config sulla dimensione massima del file - aumentalo e git si comporta e tutti sono felici! Non è GitHub per me, ma il nostro sito privato Bonobo.Git.Server.
Vidar,


0

Sono stato in grado di aggirare questo problema utilizzando Git Shell.

Ogni repository all'interno di github.com fornisce gli URL HTTPS / SSH / Subversion che è possibile utilizzare per scaricare tramite Shell, vedere qui: http://prntscr.com/8ydguv .
Basato sulle recenti modifiche di GitHub, SSH sembra essere il metodo migliore.

Comando da usare in Shell:

git clone "URL of repo goes here w/ no quotes"

Cosa intendi con "Git Shell"? Usando gitin un terminale?
Karl Richter,

0

Fai questo per vedere la chiave che stai usando; ssh -vT git@github.digitalglobe.com

Quindi assicurati di avere questa corsa all'inizio. eval "$ (ssh-agent -s)" ssh-add ~ / .ssh / id_rsa


0

1) cd alla direzione del progetto

2) git status

3) git checkout -f HEAD

4) conferma il successo tirando giù di nuovo il master per assicurarti di essere aggiornato se il tuo repository sembrava incompleto

Questo funziona se ricevi l'errore in questione da Git di Visual Studio durante la clonazione di un repository da Bitbucket


0

Questo può accadere anche se uno qualsiasi dei commit che stai spingendo non è corretto.

(Inconsapevolmente) ho avuto un commit con un campo Email autore non valido, ma tutto quello che stavo ricevendo era questo vago remote end hung upmessaggio di errore. Sono stato in grado di spingere altri rami non solo questo un ramo, così ho cominciato a spingere impegna dal "cattivo" ramo uno alla volta fino a quando ho finalmente atterrato a:

Pushing to git@github.com: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 'git@github.com:directangular/unicorn.git'

Quindi sembra che l' remote end hung up unexpectedlyerrore stia "inghiottendo" il messaggio di errore reale, che è probabilmente una sorta di commit non corretto come ho fatto qui.

Dopo aver corretto l'email non valida sono stato in grado di spingere bene.


0

Non penso che sia una buona idea farlo, ma se hai il backup nella tua macchina .. spingere ancora una volta e quindi provare a clonare repository e quindi rimuovere .git dalla vecchia directory e spostare .git dalla nuova cartella clonata .. git è stato risolto ma a causa del problema alcuni file potrebbero non essere caricati su git. Spingi di nuovo tutto dal tuo backup e poi tiralo sul tuo server o sull'altro computer dove viene bloccato. In questo momento ho appena fatto ... Funziona per me .. e fa un backup della tua directory prima di farlo.

E per favore correggimi se sbaglio. Inoltre non so cosa può andare storto dopo averlo fatto? Ma questa volta funziona davvero.


0

il mio problema (fatale: il terminale remoto si è bloccato inaspettatamente) è stato risolto controllando l'autorizzazione del repository e il proprietario.

Il proprietario dei file del repository git deve essere quell'utente con cui si desidera eseguire push / pull / clone.


0

Nessuna delle risposte sopra ha funzionato per me, ma ecco cosa ha funzionato.

1) elimina .git/dal tuo progetto
2) clona il repository remoto in una nuova posizione come il desktop. git clone https://github.com/foo/bar.git
3) passare .git/dalla nuova posizione alla vecchia posizione
4) ripetere il commit e spingere le modifiche


0

La causa del problema per me sono state le impostazioni di rete: ho una scheda wifi "Killer" che apparentemente non funziona con i pacchetti di rete in un modo che SSH e SSL non gradiscono.

Per risolvere il problema, ho dovuto andare in "Killer Control Center", "Parametri" e disabilitare "Advanced Stream Detect" - i comandi git hanno ricominciato a funzionare all'istante.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.