Git push error pra-terima kait ditolak

168

Saya telah menjalankan gitlabhq rails server di mesin virtual, mengikuti 1-6 langkah dari tutorial ini https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md dan memulai perintah eksekusi server rails sudo -u git -H bundle exec rails s -e production. Setelah itu saya membuat pengguna, menggunakan alat admin dan membuat proyek baru di bawah pengguna ini. Lalu saya mencoba untuk mendorong proyek yang ada ke repo ini seperti biasa. Tetapi pada langkah terakhir, git push origin mastergagal dengan kesalahan

master [ditolak jauh] -> master (pra-terima kait ditolak)

Informasi tambahan:

1) Saya belum mengaktifkan pengguna (pemilik proyek) melalui tautan aktivasi email, karena saya belum mengonfigurasi layanan pos di sisi server dan saya tidak menemukan petunjuk bagaimana melakukannya di manual ini.

2) Server Gitlab menghasilkan kiat bagaimana mendorong proyek untuk melakukan repo dan tidak ada repositories/jalurnya. Maksud saya menghasilkan git@mygitlabhost:user/repo.gitbukan git@mygitlabhost:repositories/user/repo.gityang benar.

3) Ketika saya mencoba untuk debug itu, saya membuka pre-receivenaskah dalam repo pada server dan mencoba untuk variabel keluaran (ada 3 dari mereka): refs = ARGF.read, key_id = ENV['GL_ID']dan repo_path = Dir.pwddan menemukan, bahwa KEY_ID selalu kosong. Mungkin masalahnya ada di sini ... Jika demikian, tolong beri saya saran tentang cara memperbaikinya. Terima kasih

Hroft
sumber
15
Saya bersumpah, setidaknya ada 1 orang di setiap tim pengembangan perangkat lunak yang bangun setiap hari dan berpikir bagaimana membuat hidup pengembang lain jauh lebih sulit.
samayo
Sepertinya ada jawaban yang sangat populer yang harus bekerja untuk kebanyakan orang. Namun, dalam kasus saya, pesan yang sama diterima dari Git Hub ketika secara tidak sengaja ada dorongan lain yang sedang berlangsung dari mesin lain ketika mencoba mendorong.
Hack-R

Jawaban:

230

GitLab secara default menandai mastercabang sebagai protected(Lihat bagian Protecting your codedi https://about.gitlab.com/2014/11/26/keeping-your-code-protected/ mengapa). Jika demikian dalam kasus Anda, maka ini dapat membantu:

Buka proyek Anda> Pengaturan> Gudang dan pergi ke "Cabang yang dilindungi", cari cabang "master" ke dalam daftar dan klik "Batalkan proteksi" dan coba lagi.

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

Untuk versi 8.11 dan di atas caranya di sini: https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-certain-users

Max Vyaznikov
sumber
8
UI telah sedikit berubah: Setelah memproyeksikan "Pengaturan", klik tab "Gudang". Lalu "Cabang-cabang yang Dilindungi"
Donn Lee
Jadi saya mengalami masalah yang sama dengan OP dan solusi ini berhasil untuk saya, terima kasih! Tapi sekarang saya bertanya-tanya, mengapa? Saya telah menggunakan gitlab untuk sementara waktu dan tiba-tiba saya melakukan ini? Apa yang berubah?
Andrew Lamarra
2
Karena GitLab 8.11opsinya telah sedikit berubah, periksa detailnya di sini
Arghya C
menghadapi masalah yang sama. Di sini saya bahkan tidak bisa mendorong cabang lain juga. Saya mendorongnya pertama kali.
Santosh Kadam
1
saya menghapus tanpa perlindungan tetapi apa yang akan terjadi sekarang? adakah orang lain di dunia yang dapat mengerjakan repo ini?
Flutterer
14

Berikut masalah yang diselesaikan di mesin lokal saya:

A. Pertama, pastikan Anda menggunakan detail login yang benar untuk terhubung ke Bitbucket Server (mis. Kunci nama pengguna / kata sandi / SSH yang menjadi milik Anda) 

B. Kemudian, pastikan bahwa nama / alamat email diatur dengan benar di konfigurasi Git lokal Anda: Tetapkan konfigurasi Git lokal Anda untuk akun yang Anda coba tekan (cek menyatakan bahwa Anda adalah orang yang melakukan file) * Perhatikan bahwa ini peka huruf besar-kecil, untuk nama dan alamat email * Ini juga peka terhadap ruang - beberapa akun perusahaan memiliki spasi / karakter tambahan dalam nama mereka, misalnya. " Contractor/ space space(LDN)". Anda harus memasukkan jumlah ruang yang sama dalam konfigurasi Anda seperti pada Bitbucket Server. Periksa ini di Notepad jika macet.

C. Jika Anda menggunakan akun yang salah, cukup alihkan kredensial akun Anda (nama pengguna / kata sandi / kunci SSH) dan coba dorong lagi.

D. Lain, jika konfigurasi lokal Anda salah, Anda harus mengubahnya

Untuk Mac

open -a TextEdit.app ~/.gitconfig

CATATAN: Anda harus memperbaiki komitmen lama yang Anda coba tekan.

  1. Ubah komit terakhir Anda:

    > git commit --amend --reset-author
    
      
    <save and quit the commit file text editor that opens, if Vim then
    :wq to save and quit>
    
  2. Coba dorong kembali komitmen Anda:

    > git push
    
Maverick09
sumber
12

Dalam kasus saya, tim saya memimpin untuk membuat repo (repo kosong) dan menugaskan saya sebagai pengembang sehingga ketika saya mendorong ke kode secara langsung untuk menguasai kesalahan yang saya hadapi ! [remote rejected] master -> master (pre-receive hook declined)Jadi bagaimana cara memperbaikinya maka ia menugaskan saya sebagai pengelola sehingga saya dapat mendorong kode langsung ke master.

Saad Qamar
sumber
10

Tampaknya masalahnya adalah dengan beberapa layanan, seperti sidekiq. Menjalankan sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=productionoutput semua masalah dengan konfigurasi.

Hroft
sumber
2

Anda mungkin tidak memiliki akses pengembang ke proyek atau cabang utama. Anda memerlukan akses dev untuk mendorong pekerjaan baru.

Pekerjaan baru yang berarti cabang dan komitmen baru.

Vishav Premlall
sumber
2

Mungkin bukan itu masalahnya, tetapi ini adalah solusi untuk kesalahan " pra-terima kait saya ditolak ":

Ada beberapa repositori yang hanya mengizinkan modifikasi melalui Pull Request . Ini artinya Anda harus

  1. Buat cabang baru sebagai basis cabang tempat Anda ingin mendorong perubahan Anda.
  2. Komit dan dorong perubahan Anda ke cabang baru.
  3. Buka Permintaan Tarik untuk menggabungkan cabang Anda dengan yang asli.
Rocío García Luque
sumber
0

Anda perlu menambahkan kunci ssh Anda ke akun git Anda, jika ia melempar kesalahan kemudian hapus kunci ssh sebelumnya dan buat kunci ssh baru kemudian tambahkan.

Hardik Hardiya
sumber
Itu tidak membantu. :( Diuji pada kedua akun - root dan myuser pada vm dan resp mesin lokal.
Hroft
periksa git remote -v, repo git Anda ditambahkan atau tidak?
Hardik Hardiya
output 'git remote -v': origin git @ mygitlabhost: repositori / user / repo.git (fetch) origin git @ mygitlabhost: repositori / user / repo.git (push)
Hroft
Jika Anda menggunakan gitlab yang diinangi, masalahnya mungkin ada di pihak mereka. Coba lagi beberapa menit kemudian.
Erik Aronesty
0

Saya memecahkan masalah ini dengan mengubah remote 'origin' urldari httpke gitprotokol di.git/config

zzx akan
sumber
0

Buka Pengaturan proyek -> Kait -> (Bawah) Kait pra-terima

Nonaktifkan cp memerlukan referensi masalah dalam komit

Manoj
sumber
0

Saya menemukan kesalahan yang sama menggunakan BitBucket. Saya punya repo Git lokal yang ingin saya buat cadangannya secara online, jadi saya membuat repositori baru dari akun BitBucket saya (menggunakan antarmuka web).

Setelah berjalan git remote add origin [email protected]:StatMarianne/<a private repo>.git, saya berlari git push origin mastertanpa hasil (saya biasanya tidak menggunakan opsi -u dengangit push karena saya tidak keberatan mengetik repo dan nama cabang penuh saat mendorong dan menarik).

Kesalahan terbaca:

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 '[email protected]:StatMarianne/<a private repo>.git'

Tetapi cabang lokal saya berhasil didorong ketika saya berlari git push -u origin master (mengikuti instruksi ketat BitBucket).

Saya menemukan itu mengejutkan, karena -u ( --set-upstream) seharusnya hanya "menambahkan referensi hulu (pelacakan) ..." Bagaimanapun.

mkcor
sumber
-1

Saya menghadapi masalah yang sama, ini karena saya mendorong kode saya langsung di cabang utama, dan saya tidak punya hak untuk ini. Jadi saya mendorong kode saya di cabang baru dan setelah itu, saya membuat permintaan tarik untuk bergabung dengan master.

ferozpuri
sumber