Git push errore di pre-ricezione dell'errore push rifiutato


168

Ho eseguito gitlabhq rails server su macchina virtuale, seguendo 1-6 passaggi da questo tutorial https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md e avvia il comando rails server sudo -u git -H bundle exec rails s -e production. Successivamente ho creato l'utente, utilizzando gli strumenti di amministrazione e creato un nuovo progetto con questo utente. Quindi sto cercando di spingere il progetto esistente in questo repository come sempre. Ma nell'ultimo passaggio, git push origin masternon riesce con l'errore

[rifiutato a distanza] master -> master (hook di pre-ricezione rifiutato)

Informazioni addizionali:

1) Non ho attivato l'utente (proprietario del progetto) tramite collegamento di attivazione e-mail, perché non ho configurato il servizio postale sul lato server e non ho trovato istruzioni su come farlo in questo manuale.

2) Il server Gitlab genera suggerimenti su come inviare il progetto al repository e non è presente il repositories/percorso. Voglio dire, genera git@mygitlabhost:user/repo.gitinvece git@mygitlabhost:repositories/user/repo.gitche è corretto.

3) Quando ho provato a eseguire il debug, ho aperto pre-receivelo script all'interno dei pronti contro termine sul server e cercato di variabili di uscita (non v'è 3 di loro): refs = ARGF.read, key_id = ENV['GL_ID']e repo_path = Dir.pwded ho trovato, che key_id è sempre vuoto. Forse il problema è qui ... In tal caso, ti prego di darmi suggerimenti su come risolverlo. Grazie


15
Lo giuro, c'è almeno 1 persona in ogni team di sviluppo software che si sveglia ogni giorno e pensa a come rendere le vite degli altri sviluppatori molto più difficili.
samayo,

Sembra che ci sia una risposta molto popolare che deve funzionare per la maggior parte delle persone. Nel mio caso, tuttavia, lo stesso messaggio è stato ricevuto da Git Hub quando accidentalmente era in corso un'altra spinta da un'altra macchina durante il tentativo di spinta.
Hack-R,

Risposte:


230

GitLab di default contrassegna il masterramo come protected(Vedi parte Protecting your codein https://about.gitlab.com/2014/11/26/keeping-your-code-protected/ why). In tal caso nel tuo caso, questo può aiutare:

Apri il tuo progetto> Impostazioni> Repository e vai su "Branch protetti", trova il ramo "master" nell'elenco e fai clic su "Unprotect" e riprova.

tramite https://gitlab.com/gitlab-com/support-forum/issues/40

Per la versione 8.11 e successive qui: https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-certain-users


8
L'interfaccia utente è cambiata un po ': dopo il progetto "Impostazioni", fai clic sulla scheda "Repository". Quindi "Filiali protette"
Donn Lee,

Quindi stavo avendo lo stesso problema di OP e questa soluzione ha funzionato per me, grazie! Ma ora mi chiedo, perché? Ho usato gitlab per un po 'e all'improvviso ho fatto questo? Che cosa è cambiato?
Andrew Lamarra,

2
Dal momento che GitLab 8.11le opzioni sono leggermente cambiate, controlla i dettagli qui
Arghya C

affrontando lo stesso problema. Qui non sono nemmeno in grado di spingere anche altri rami. Lo sto spingendo la prima volta però.
Santosh Kadam,

1
ho rimosso non protetto ma cosa succederà ora? chiunque altro al mondo può lavorare su questo repository?
Flutterer,

14

A seguito di un problema risolto nel mio computer locale:

A. Innanzitutto, assicurati di utilizzare i dettagli di accesso corretti per connetterti al server Bitbucket (es. Un nome utente / password / chiave SSH che ti appartiene) 

B. Quindi, assicurati che il nome / indirizzo e-mail sia impostato correttamente nella tua configurazione Git locale: imposta la tua configurazione Git locale per l'account che stai cercando di inserire (il controllo afferma che sei la persona che ha eseguito il commit dei file) * Nota che è sensibile al maiuscolo / minuscolo, sia per il nome che per l'indirizzo e-mail * È anche sensibile allo spazio: alcuni account aziendali hanno spazi / caratteri aggiuntivi nel loro nome, ad es. " Contractor/ space space(LDN)". Devi includere lo stesso numero di spazi nella tua configurazione come su Bitbucket Server. Controlla questo nel Blocco note se bloccato.

C. Se si utilizzava l'account sbagliato, è sufficiente cambiare le credenziali dell'account (nome utente / password / chiave SSH) e provare a spingere di nuovo.

D. Altrimenti, se la tua configurazione locale non è corretta, dovrai modificarla

Per MAC

open -a TextEdit.app ~/.gitconfig

NOTA: dovrai correggere i vecchi commit che stavi cercando di spingere.

  1. Modifica il tuo ultimo commit:

    > git commit --amend --reset-author
    
      
    <save and quit the commit file text editor that opens, if Vim then
    :wq to save and quit>
    
  2. Prova a ripetere i tuoi commit:

    > git push
    

12

Nel mio caso, il mio team ha portato alla creazione di un repository (il repository era vuoto) e mi assegnava come sviluppatore, quindi quando ho spinto direttamente il codice per padroneggiare l'errore che stavo riscontrando, ! [remote rejected] master -> master (pre-receive hook declined)allora come è stato risolto che mi ha assegnato come manutentore, quindi io è stato in grado di inviare il codice direttamente al master.


10

Sembra che il problema sia con alcuni servizi, come sidekiq. L'esecuzione sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=productionrisolve tutti i problemi con config.



2

Potresti non avere accesso da sviluppatore al progetto o al ramo principale. È necessario l'accesso agli sviluppatori per aumentare il nuovo lavoro.

Nuovo lavoro che significa nuove filiali e impegni.


2

Potrebbe non essere il caso, ma questa era la soluzione al mio " gancio di pre-ricezione rifiutato errore " ":

Esistono alcuni repository che consentono modifiche solo tramite Pull Request . Questo significa che devi farlo

  1. Creare un nuovo ramo prendendo come base il ramo in cui si desidera inviare le modifiche.
  2. Esegui il commit e invia le modifiche alla nuova filiale.
  3. Apri una richiesta pull per unire la tua filiale con quella originale.

0

Devi aggiungere la tua chiave ssh al tuo account git, se genera un errore, elimina la chiave ssh precedente e crea una nuova chiave ssh, quindi aggiungi.


Questo non ha aiutato. :( Testato su entrambi gli account: root e myuser su VM e macchina locale rispettivamente.
Hroft

controlla git remote -v, il tuo repository git è stato aggiunto o no?
Hardik Hardiya,

output 'git remote -v': origin git @ mygitlabhost: repository / utente / repo.git (recupero) origin git @ mygitlabhost: repository / utente / repo.git (push)
Hroft

Se stai usando gitlab ospitato, il problema è probabilmente dalla loro parte. Riprova qualche minuto dopo.
Erik Aronesty,

0

Ho risolto questo problema passando remote 'origin' urlda httpa gitprotocollo in.git/config


0

Vai a Impostazioni progetto -> Ganci -> (Sotto) Ganci di pre-ricezione

Disabilitare cp richiede riferimento al problema in commit


0

Mi sono imbattuto nello stesso errore usando BitBucket. Avevo un repository Git locale di cui volevo eseguire il backup online, quindi ho creato un nuovo repository dal mio account BitBucket (utilizzando l'interfaccia Web).

Dopo l'esecuzione git remote add origin git@bitbucket.org:StatMarianne/<a private repo>.git, ho corso git push origin mastersenza risultati (in genere non utilizzo l' opzione -u congit push perché non mi dispiace digitare i repository completi e i nomi dei rami quando si spinge e si tira).

L'errore ha letto:

remote: You're not allowed to write to this repository.
To bitbucket.org:StatMarianne/<a private repo>.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@bitbucket.org:StatMarianne/<a private repo>.git'

Ma la mia filiale locale è stata spinta con successo quando ho corso git push -u origin master (seguendo rigorosamente le istruzioni di BitBucket).

Lo trovo sorprendente, poiché -u (--set-upstream ) dovrebbe solo "aggiungere riferimenti a monte (tracciamento) ..." Comunque.


-1

Ho affrontato lo stesso problema, questo perché sto inviando il mio codice direttamente nel ramo principale e non ho i diritti per questo. Quindi inserisco il mio codice in un nuovo ramo e successivamente ho creato una richiesta pull da unire al master.

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.