Perbaiki kesalahan GitLab: "Anda tidak diizinkan mendorong kode ke cabang yang dilindungi pada proyek ini"?

327

Saya memiliki masalah ketika saya mendorong kode saya ke git sementara saya memiliki akses pengembang di proyek saya, tetapi semuanya baik-baik saja ketika saya memiliki akses master. Dari mana datangnya masalah? Dan bagaimana cara memperbaikinya?

Pesan eror:

kesalahan: Anda tidak diizinkan untuk mendorong kode ke cabang yang dilindungi pada proyek ini.
...
error: gagal mendorong beberapa referensi ke ...

Fachrein Rachim Muhamad
sumber
Jawaban Hcorg adalah solusi yang bagus. Ada masalah lain dengan itu. Jika proyek baru saja dibuat dan belum memiliki cabang. Jika klik "Cabang yang dilindungi", itu akan dialihkan ke halaman beranda proyek. Buat cabang akan bekerja.
pdwjun
Lihat juga stackoverflow.com/a/61964599/6309 , dengan GitLab 13.0 (Mei 2020), di mana Anda dapat mengaktifkan perlindungan cabang standar tingkat grup.
VonC

Jawaban:

506

tidak ada masalah - semuanya berfungsi seperti yang diharapkan.

Di GitLab beberapa cabang dapat dilindungi. Secara default hanya Pengguna Maintainer / Pemilik yang dapat melakukan ke cabang yang dilindungi (lihat dokumen izin ). mastercabang dilindungi secara default - itu memaksa pengembang untuk mengeluarkan permintaan gabungan untuk divalidasi oleh pengelola proyek sebelum mengintegrasikannya ke dalam kode utama.

Anda dapat menghidupkan dan mematikan perlindungan pada cabang tertentu di Pengaturan Proyek (di mana tepatnya tergantung pada versi GitLab - lihat instruksi di bawah).

Pada halaman pengaturan yang sama Anda juga dapat memungkinkan pengembang untuk mendorong ke cabang yang dilindungi. Dengan pengaturan ini, perlindungan akan terbatas pada menolak operasi yang membutuhkan git push --force(rebase dll.)

Sejak GitLab 9.3

Pergi ke proyek: "Pengaturan" → "Repositori" → "Perluas" pada "Cabang yang dilindungi"

masukkan deskripsi gambar di sini

Saya tidak begitu yakin ketika perubahan ini diperkenalkan, tangkapan layar berasal dari versi 10.3.

Sekarang Anda dapat memilih siapa yang diizinkan untuk menggabungkan atau mendorong ke cabang yang dipilih (misalnya: Anda dapat mematikan push to to masterall, memaksa semua perubahan ke cabang dilakukan melalui Permintaan Gabung). Atau Anda dapat mengklik "Batalkan Proteksi" untuk sepenuhnya menghapus perlindungan dari cabang.

Sejak GitLab 9.0

Demikian pula dengan GitLab 9.3, tetapi tidak perlu mengklik "Perluas" - semuanya sudah diperluas:

Buka proyek: "Pengaturan" → "Repositori" → gulir ke bawah ke "Cabang yang dilindungi".

masukkan deskripsi gambar di sini

Pre GitLab 9.0

Proyek: "Pengaturan" → "Cabang yang dilindungi" (jika Anda setidaknya 'Master' dari proyek yang diberikan).

Pengaturan → Cabang yang dilindungi

Kemudian klik "Batalkan Proteksi" atau "Pengembang dapat mendorong":

masukkan deskripsi gambar di sini

Hcorg
sumber
Jangan lupa bahwa mungkin diperlukan beberapa izin. Sebagaimana dinyatakan dalam docs.gitlab.com/ee/user/project/protected_branches.html , setidaknya 'Tingkat izin master'. Dalam kasus saya, menekan pada roda pengaturan hanya menunjukkan opsi 'Tinggalkan Proyek`.
CoolMind
1
Untuk beberapa alasan saya tiba-tiba harus menambahkan diri saya sebagai pengguna master untuk proyek saya sendiri.
jgillich
3
Saya mendapatkan masalah ini karena saya BUKAN anggota dari proyek SENDIRI saya dan saya sudah mendorong proyek ini ... Untuk mengubahnya, dalam proyek tur, klik roda gigi, Anggota, cari pengguna Anda, berikan peran dan klik "Tambah pengguna untuk memproyeksikan ".
Loenix
Aneh, aku juga, harus melibatkan diriku dalam proyek pribadi di gitlab.com
Thomas Decaux
1
Baik jika Anda adalah satu-satunya pengelola atau pengembang, sehingga Anda dapat mengubah pengaturan dan bermain dengannya. Tetapi jika ada tim yang mengerjakan repo, maka itu bukan praktik yang baik untuk mengubah perlindungan repo.
Mnemo
27

untuk GitLab Enterprise Edition 9.3.0

Secara default, cabang utama dilindungi sehingga tidak terlindungi :)

1-Pilih Anda "memproyeksikan"

2-Pilih "Repositori"

3-Pilih "cabang"

4-Pilih "Pengaturan Proyek"

5-In "Cabang yang Dilindungi" klik untuk "memperluas"

6-dan setelah klik pada tombol "tidak aman"

krekto
sumber
Saya belum memiliki "cabang" karena saya belum membuat file di repositori ini. Saya telah membuat Readme.md dan cabang muncul.
Ikrom
1

Saya mengalami kesalahan ini pada "cabang kosong" di server gitlab lokal saya. Beberapa orang menyebutkan bahwa "Anda tidak dapat mendorong untuk pertama kalinya di cabang kosong". Saya mencoba membuat file README sederhana di gitlab melalui browser saya. Kemudian semuanya diperbaiki dengan luar biasa dan masalahnya beres !! Saya menyebutkan bahwa saya adalah penguasa dan cabang tidak dilindungi.

Vahid F
sumber
Ini aneh bagi saya dan saya menganggap masalah ini sebagai bug gitlab. Tidak dapat diterima bagi saya untuk tidak memiliki izin untuk mendorong repo kosong. Saya harap git punya jawaban untuk itu.
Vahid F
1

Solusi sederhana untuk masalah ini untuk melakukan obrolan cepat dengan orang yang memiliki peran sebagai pemilik di gitlab. Dia dapat mendorong satu file READ.md atau serupa dengan yang baru mulai. Nantinya, semuanya akan bekerja seperti sebelumnya.

keris
sumber
Jika memungkinkan, cobalah untuk mendapatkan peran pemilik dalam repositori. Setelah Anda memiliki peran pemilik, Anda dapat berkomitmen langsung untuk menguasainya. Ini menjengkelkan tetapi kait pencegahan untuk tidak membuat proyek baru yang tidak diinginkan. Tidak ada peretasan sampai pemilik repo mendorong file pertama atau Anda memiliki peran pemilik. Semoga ini membantu.
keris
1

Saya menggunakan Windows saat masalah ini muncul.

Kesalahannya aneh karena terjadi sebelum saya bisa memasukkan nama pengguna dan kata sandi saya. Bagaimana jika ada cache atau sesuatu seperti ini? Saya menggali secara online dan menemukan jawaban ini di forum dukungan gitlab :

Saya membuka "Control Panel => Akun Pengguna => Kelola kredensial Anda => Kredensial Windows" Saya menemukan dua untuk https: //@github.com dan satu adalah pengguna yang salah. Saya menghapusnya dan pada "git push" berikutnya saya di-reprompted dan memberikan kredensial yang benar dan berhasil! Beberapa catatan lain - ini bisa terjadi dengan remote git apa pun.

Di Kredensial Windows, saya menemukan dua entri GitLab untuk akun lama. Saya menghapus keduanya dan sekarang berfungsi!

Panel:

masukkan deskripsi gambar di sini

aloisdg pindah ke codidact.com
sumber
@YanickSenn Anda dipersilakan. Saya kehilangan banyak waktu untuk yang ini. Senang itu bisa membantu.
aloisdg pindah ke codidact.com
1

Ini dianggap sebagai fitur di Gitlab.

Maintainer / Ownerakses tidak pernah dapat memaksa mendorong lagi untuk cabang default & terlindungi, sebagaimana dinyatakan dalam dokumen ini masukkan deskripsi gambar di sini

mochadwi
sumber
1
Sebenarnya ini sama sekali tidak disayangkan. Ini pasti hal yang baik. Ini lapisan perlindungan ekstra.
Chiramisu
0

Saya mengalami masalah yang sama pada repositori saya. Saya adalah master repositori, tetapi saya memiliki kesalahan seperti itu.

Saya sudah melindungi proyek saya dan kemudian kembali dilindungi, dan kesalahannya hilang.

Kami telah memutakhirkan versi gitlab antara dorongan saya sebelumnya dan yang bermasalah. Saya kira upgrade ini telah menciptakan bug.

jean pierre huart
sumber
0

Solusi di atas menjelaskan dengan jelas apa masalahnya; ketika Anda tidak memiliki kendali atas repo, cara terbaik untuk mengirimkan kode Anda adalah dengan membuat Fork dari repo asli dan mengirimkan kode Anda ke repo baru ini sehingga nanti Anda bisa mendorongnya ke yang asli.

gogasca
sumber