Errore Git durante il tentativo di push - hook di pre-ricezione rifiutato


206

Quando provo a inviare una modifica che ho eseguito, visualizzo il seguente errore ...

git.exe push -v --progress  "origin" iteration1:iteration1

remote: *********************************************************************
To ssh://git@mycogit/cit_pplus.git
! [remote rejected] iteration1 -> iteration1 (pre-receive hook declined)
error: failed to push some refs to 'ssh://git@mycogit/cit_pplus.git'

Cosa sta succedendo?


8
Cosa c'è nel hook di pre-ricezione mycogit?
Rob Mayoff,

Non proveresti a inviare file di grandi dimensioni a Github, vero?
Adam F,

Cordiali saluti: oggi tutti i miei colleghi hanno ricevuto questo errore, alla fine abbiamo deciso di riavviare il nostro server stash e si è risolto magicamente. Non abbiamo idea di quale fosse effettivamente il problema.
T_D

Risposte:


125

Dovresti chiedere a chiunque mantenga il repository presso git@mycogit/cit_pplus.git.

I tuoi commit sono stati rifiutati pre-receivedall'hook di quel repository (si tratta di uno script configurabile dall'utente che ha lo scopo di analizzare i commit in arrivo e decidere se sono abbastanza buoni per essere accettati nel repository).

È anche una buona idea chiedere a quella persona di aggiornare il gancio, in modo da stampare i motivi del rifiuto.

Se il manutentore sei tu stesso, allora sembra che tu abbia un problema con la tua configurazione sul lato server. Per favore, condividi più informazioni allora.


7
Nel mio caso, BitBucket aveva una convalida del contenuto del messaggio di commit, confrontandolo con i biglietti JIRA, che era offline in quel momento.
Vítor Neil Avelino,

1
quindi quando è diventato online è stato risolto?
Shareef

5
Nel mio caso è stata una mancata corrispondenza nel nome utente con cui sono stati generati i commit e il nome utente in BitBucket. Non ero autorizzato ad aggiornare il nome utente di BitBucket, quindi ho dovuto ripristinare i miei commit e impegnarli nuovamente con il nome utente aggiornato. Puoi aggiornare il nome utente git con questo comandogit config user.name 'UpdatedUserName'
MM

3
Nel nostro caso bitbucket non ha permesso a nessuno di spingere verso questo ramo.
Ramon Fincken,

Nel mio caso ho dovuto trovare le impostazioni del repository su bitbucket e disabilitare il committer di verifica nelle impostazioni Hook.
Sizons,

78

Scommetto che stai provando una spinta non veloce e il gancio la blocca. In tal caso, esegui semplicemente git pull --rebaseprima di premere per modificare le modifiche locali sulla base di codice più recente.


Questo e spettacolare. Ora posso di nuovo spingere e tirare, ma prima devo impostare upstream come git branch --set-upstream-to=origin/myBranch. +1 per la tua risposta.
AlokeT

In un nuovo repository ho inserito un ramo (non master), quindi l'ho ripassato e ho ricevuto l'errore durante il push. Non ho trovato web-hook. Ho eseguito git pull --rebase, ho dovuto rifare nuovamente e sono stato in grado di spingere il ramo. Alla fine ho scoperto che il mio ramo è diventato protetto.
CoolMind

60

La dimensione del file è importante. Esiste un limite di ~ 120 MB per un singolo file. Nel mio caso, .gitignore usando Visual Studio aveva il file elencato, ma il file era ancora sottoposto a commit. Usando git cli, possiamo ottenere maggiori dettagli sull'errore.

l'hook di pre-ricezione rifiutato era il risultato del file di grandi dimensioni. Fondamentalmente convalidare la spinta.

Per risolverlo, ho rimosso l'ultimo commit usando:

git reset --soft HEAD~1

Ho quindi escluso il file dal commit.

Nota: utilizzare HEAD ~ N per tornare al numero N di precedenti commit. (ad es. 3, 4) Utilizzare sempre l'opzione --soft per mantenere le modifiche nella cartella

spero che sia d'aiuto.


Questo mi ha aiutato poiché il mio problema era che un file di dump SQL indesiderato (155 MB di dimensioni del file) veniva spinto (per caso).
Mehrdad Dastgir,

1
Il limite della dimensione del file dipende dal provider di hosting. GitHub ha un limite intorno a quella dimensione, per altri varia e git self-hosted naturalmente non ha tali limiti.
1615903,

1
cosa fai se hai già diversi commit dopo il push rifiutato? questo è il mio caso ho un file di grandi dimensioni indesiderato (627 MB) in uno dei precedenti commit prima di provare a spingere in repo
leeCoder

Ho avuto un file CSV caricato per errore. Quindi, nel mio caso, l'errore era dovuto a quello.
Tonhozi,

Se hai diversi commit, aumenta l'indice per ripristinare la testa di quel commit. Ad esempio, utilizzare HEAD ~ 3 per tornare a tre commit precedenti. Utilizzare sempre l'opzione --soft per mantenere le modifiche nella cartella.
ozkary,

13

Ciò può essere dovuto al fatto che non disponevi del diritto di accesso per inviare un commit a un ramo come master. Puoi chiedere al manutentore di darti il ​​diritto di spingere commit.


Penso che questo sia corretto, ma ciò che è interessante è che VS sta cercando di spingere sul ramo padre non il nome del ramo effettivo sul telecomando. Quindi, se il ramo genitore è protetto, sembra che ciò si stia verificando, ma non sembra esserci alcun modo per correggerlo in VS e devi passare alla linea cmd.
Segna l'


8

Ho ricevuto questo messaggio quando il server GitLab stava subendo alcune modifiche. Il giorno dopo la spinta ha funzionato bene. Comunque, come altri hanno sottolineato, verifica con il tuo manutentore per essere sicuro.


1
Ho appena avuto questo problema e immagino che GitLab stia apportando modifiche. Ha dato 10 minuti e ha funzionato. Non ho cambiato nulla.
woter324,

Ho appena avuto questo problema. Per chiunque voglia verificare se questo è il caso: status.gitlab.com
Renan Ferrari

5

Ho avuto questo problema durante il tentativo di unire le modifiche con dimensioni del file superiori a quelle consentite dal repository remoto (nel mio caso era GitHub)


2
Nel mio caso, anche dopo aver eliminato il file, GitHub si è ancora lamentato ... ma questa risposta ha fatto il trucco stackoverflow.com/questions/19573031/…
CodenameDuchess

5

Ho riscontrato questo stesso problema.
Ciò che mi ha risolto è stato quello di passare a un altro ramo e poi di nuovo a quello originale.

Non sono sicuro di quale sia stata la causa sottolineata, ma questo ha risolto.



3

Bitbucket : controlla le autorizzazioni Branch in Impostazioni (potrebbe essere su "Nega tutto"). Se non funziona, clona semplicemente il tuo ramo in un nuovo ramo locale , invia le modifiche al telecomando (verrà creato un nuovo ramo remoto) e crea un PR.


2

Nel caso in cui aiuti qualcuno:

Avevo un repository vuoto senza ramo master da non proteggere (in Gitlab) quindi prima di correre git push -u origin --all

  • git push -u origin masterPrima dovevo correre ,
  • annullare la protezione temporanea del ramo principale
  • spingere il resto ( --all& --tags)

2

Ho riscontrato lo stesso errore, dopo aver verificato di avere un accesso da sviluppatore e di non poter pubblicare una nuova filiale. L'aggiunta di diritti di accesso più elevati ha risolto questo problema. (Gitlab)


2

Ho riscontrato questo errore con GitHub gist. Stavo cercando di inviare un commit con i file nelle sottodirectory. Si è scoperto che Gist può contenere solo file nella directory principale.


Anche questo. Si scopre che il repository ha avuto il file "snippets\\csharp.json"che ha reso difficile git su Windows.
Carl Walsh, il

2

Rimuovere l'opzione di succursale protetta o consentire ruoli aggiuntivi come sviluppatori o amministratori per consentire a questi utenti che riscontrano questo errore di eseguire fusioni e push.


1

Nel mio caso, abbiamo hook per i messaggi di commit, il nostro script del server accetta i commit se hanno il formato speciale per i messaggi di commit "<JIRA ID><Message>". (Agganciare) rifiuta il commit se il rispettivo ticket Jira non esiste o ci sono alcuni simboli speciali nel messaggio di commit. Devo riscontrare questo errore quando aggiungo /, [,> ecc. In un messaggio di commit, rimuovendo quelli che funzionano bene.


È improbabile che questa risposta sia di aiuto, poiché il poster originale (e chiunque altro visiterà in futuro) avrà uno script diverso configurato come hook di pre-ricezione.
Aronisstav,

1

Questo in realtà accade quando YACC è abilitato sul lato server in BitBucket. YACC è abilitato per i nomi dei problemi JIRA da menzionare nel messaggio di commit. Quindi ogni volta che commetti qualcosa, almeno mantieni il tuo numero JIRA nel messaggio di commit e poi puoi anche aggiungere il tuo messaggio.


1

Stavo usando GitKraken e abbiamo creato un ramo locale, quindi abbiamo unito due rami remoti in esso e quindi abbiamo provato a spingere il ramo locale verso l'origine. Non ha funzionato con lo stesso messaggio di errore.

La soluzione era creare il ramo locale e spingerlo prima verso l'origine e poi fare l'unione.


1

Problema: "PUSH refs / head / - gancio di pre-ricezione non riusciti rifiutati"

Ho affrontato il problema dell'incapacità di inviare le mie modifiche al mio ramo di origine e qualsiasi cosa per padroneggiare il ramo di un determinato repository di progetti poiché le dimensioni di quel repository superavano il limite massimo di 2 GB. Stava gettando l'errore. Questo perché abbiamo spinto inconsapevolmente i dati dei test su bitbucket da altri rami di test.

PUSH Refs / head / - gancio di pre-ricezione non riusciti rifiutati

Quindi ho provato a verificare che lo stesso con altri repository di progetto e che non avessero problemi.

fix:

Il mio collega ha notato che quando abbiamo clonato il progetto a livello locale, la dimensione del progetto era di 110 MB. Quindi abbiamo iniziato a pulire i rami che abbiamo unito in precedenza e i rami attivi che non sono più necessari. Una volta effettuata la pulizia per un paio di filiali, ci siamo resi conto che le dimensioni del repository sono scese drasticamente da 2 GB a 120 MB. Quindi abbiamo provato a spingere le modifiche al mio ramo e ha funzionato.


1

Nel mio caso avevo un nuovo repository, ho spinto un ramo ("UCA-46", non "master"), l'ho riformulato, forzato di nuovo e ho ottenuto l'errore. Non esistevano hook Web. Ho eseguito git pull --rebasecome consigliato da @ThiefMaster , ho dovuto rifare di nuovo ed è stato in grado di spingere il ramo. Ma quello era un modo strano e difficile.

Quindi ho visto Git push errore pre-ricevere hook rifiutato . Ho scoperto che il mio ramo è diventato protetto . Ho rimosso la protezione e ho potuto forzare di nuovo a spingere.

inserisci qui la descrizione dell'immagine


0

Ho capito quando ho provato a passare a un'istanza di dokku. Si scopre che il disco era pieno sul mio server.

Corse: du -f

E il risultato è stato:

Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs           100M  4.4M   95M   5% /run
/dev/xvda1      7.8G  7.4G  8.9M 100% /

0

Per me l'autorizzazione sul server remoto git risolve il problema. inserisci qui la descrizione dell'immagine


0

Nel mio caso, è perché ho accidentalmente aggiunto un file gigante al mio push senza impegno e non sono riuscito a liberarmene, qualunque cosa abbia fatto pull o reset o rm dopo.

la mia soluzione sporca ma praticabile è quella di rinominare la directory corrente, ri-clonare la directory in locale e riflettere manualmente le modifiche nella directory locale richiusa ...

Non suona bene ma funziona ...


1
Ho riscontrato lo stesso problema e l'utilizzo di $ git reset --soft HEAD ~ 1 ha aiutato quanto suggerito da @ozkary.
jarrettyeo,

0

L'errore per me è stato che il progetto non aveva creato alcun ramo e il mio ruolo era lo sviluppatore, quindi non ho potuto creare alcun ramo, chiedendomi che mi dessero le autorizzazioni pertinenti e tutto in ordine ora!


0

Un ramo predefinito (ad es. master) Non esiste ancora per il telecomando. Quindi devi prima creare una masterdiramazione nel server remoto git (es. Creare un README.mdfile predefinito ) quindi provare a pushtutte le filiali locali esistenti usando questo comando:

git push -u origin --all

0

Per me tutto ha funzionato bene fino a quando Bitbucket non ha cambiato automaticamente la sua politica oggi (21 aprile 2020). Questo accade in linea con una nuova funzionalità recentemente introdotta oggi chiamata Workspaces , quindi sospetto che abbia qualcosa a che fare con questo.

Soluzione alternativa : io (come amministratore) ho seguito le istruzioni per aggiungere l'indirizzo e-mail agli utenti nell'interfaccia utente (è possibile trovare l'e-mail che si sta utilizzandogit config --list

inserisci qui la descrizione dell'immagine


-7

Specificare una versione di node.js può risolvere il problema come

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
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.