git push fallisce con il telecomando: errore: hook rifiutato per aggiornare refs / heads / master


9

Di recente sto cercando di avviare il mio progetto su un repository git della community e ho avuto delle complicazioni. Sono nuovo di Git, ma ecco cosa ho cercato di fare per testarlo.

Eseguo i seguenti comandi e funzionano tutti bene.

git config --global user.name "MYNAME"
git config --global user.email "MYEMAIL"
mkdir testproject
cd testproject
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@git.xxxxx.org:community/testproject.git

e tutti i comandi precedenti vengono eseguiti senza errori. Tuttavia, quando eseguo il comando successivo, ricevo un errore enorme.

git push -u origin master

e l'errore è.

Counting objects: 3, done.
Writing objects: 100% (3/3), 204 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
Username for 'http://git.xxxxxx.org': MYEMAIL
Password for 'http://MYEMAIL.com@git.xxxxxx.org': 
remote: /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:92:in `block in materialize': Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound)
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `map!'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `materialize'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:114:in `specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:159:in `specs_for'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:148:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/environment.rb:18:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:13:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/setup.rb:17:in `<top (required)>'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'http://git.xxxxxx.org/community/testprojact.git'

Non sono davvero sicuro di cosa fare da qui, ma qualsiasi aiuto è molto apprezzato.

Inoltre, sto eseguendo Arch se è importante.

Modifica: ho provato a reinstallare rake e non ha funzionato. La mia versione attuale di rake era 10.1.1, quindi ho provato a rimuoverlo e sostituirlo con la versione 10.1.0 e anche questo non ha risolto il problema.

Tuttavia, quando stavo installando il rake, ho ricevuto un errore:

WARNING:  You don't have /home/josh/.gem/ruby/2.0.0/bin in your PATH,
          gem executables will not run.

Questo potrebbe contribuire al problema?

Risposte:


9

Il fatto che il telecomando abbia rifiutato di ricevere i dati è solo un effetto collaterale del vero problema - git pensa che sia stato negato perché uno dei ganci sull'estremità remota non è riuscito con uno stato di uscita> 0 (puoi vedere cosa c'era nel Traccia di Ruby). Sembra che uno dei ganci cerchi di usare rakee non riesca a trovarlo. Questo non è un problema con il tuo repository specifico, probabilmente. Anche quel messaggio non proviene dal tuo computer locale. Nota che è preceduto da "remoto", è il telecomando mancante rake, quindi probabilmente solo un amministratore di sistema su quel lato può risolvere il problema.

Ti suggerirei di contattare chiunque gestisca il tuo repository git della tua community.


Questo è esattamente quello che stavo pensando. Nessuno degli hook nel mio repository git è attivo, e finora nulla di ciò che ho fatto sembra cambiare l'errore o crearne di nuovi. Contatterò il proprietario del repository e vedrò se ha qualche informazione sul problema.
Joshua Strot,

Si è scoperto che il problema era che stavo cercando di inviare il metodo HTTP che non è supportato su GitLab. Devi invece spingere su SSH, che funziona meravigliosamente. Ho avuto modo di dire, non mi aspettavo che,
Joshua strot

0

Credo che questo sia il tuo problema.

remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)

Cerca questo errore Mi sono imbattuto in queste domande e risposte su SO, dal titolo: errore: hook rifiutato per aggiornare refs / heads / external_pub mentre spingevo un ramo .

Sembrerebbe che sul server sia presente un hook git che rifiuta il push.

estratto

Ganci lato server

Oltre agli hook sul lato client, è possibile utilizzare un paio di hook sul lato server importanti come amministratore di sistema per applicare praticamente qualsiasi tipo di politica per il proprio progetto. Questi script vengono eseguiti prima e dopo il push sul server. I pre hook possono uscire da zero in qualsiasi momento per rifiutare il push e stampare un messaggio di errore sul client; puoi impostare una politica push complessa come desideri.

Per determinare perché visualizzi questo messaggio di errore, devi capire quale hook ti sta facendo scattare. Gli hook sono memorizzati nella hookscartella all'interno della cartella git (all'estremità del server remoto): trova l' pre-receivehook o l' updatehook e controlla per vedere cosa sta causando il tuo problema.


All'interno della mia cartella hook, ho più file con l'estensione .sample. Non ho un hook di pre-ricezione, tuttavia c'è un hook di aggiornamento. Dal momento che tutti hanno l'estensione .sample, non credo che nessuno di loro sia in uso, quindi potrebbe essere che è un hook sul server che mi sta rifiutando? Ho guardato online e ci sono un paio di persone con il mio problema che lo hanno risolto facendo varie cose, nessuna delle quali risolto nel mio caso.
Joshua Strot,

0

Verifica ruolo / gruppo e autorizzazione nel repository GIT Il mio caso, solo l'autorizzazione rossa e il relativo accesso risolto dopo la lettura / scrittura fornito dal team del repository GIT


0

@Radhakrishnan ha già suggerito che potresti avere un problema con le autorizzazioni.

Nel caso in cui si stia utilizzando Redmine Git Hosting , verificare che il proprio ruolo di gestore autorizzazioni sia stato assegnato all'utente che sta provando a riscrivere i riferimenti di tracciamento di Git .

Tieni presente che presumo che tu sia a conoscenza dell'impatto push-force di git sugli altri utenti che potrebbero condividere lo stesso ramo remoto. Per ulteriori dettagli, consulta questo articolo

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.