Khắc phục lỗi GitLab: Bạn không được phép đẩy mã đến các nhánh được bảo vệ trong dự án này?


327

Tôi gặp vấn đề khi tôi đẩy mã của mình lên git trong khi tôi có quyền truy cập của nhà phát triển trong dự án của mình, nhưng mọi thứ đều ổn khi tôi có quyền truy cập chính. Vấn đề đến từ đâu? Và làm thế nào để khắc phục nó?

Thông báo lỗi:

lỗi: Bạn không được phép đẩy mã đến các nhánh được bảo vệ trong dự án này.
...
lỗi: không thể đẩy một số ref đến ...


Câu trả lời của Hcorg là một giải pháp tốt. Có một vấn đề khác với nó. Nếu dự án vừa tạo và nó chưa có chi nhánh. Nếu nhấp vào "Chi nhánh được bảo vệ", nó sẽ chuyển hướng đến trang chủ của dự án. Tạo một chi nhánh sẽ làm việc.
pdwjun

Xem thêm stackoverflow.com/a/61964599/6309 , với GitLab 13.0 (tháng 5 năm 2020), nơi bạn có thể kích hoạt bảo vệ nhánh mặc định ở cấp độ nhóm.
VonC

Câu trả lời:


506

không có vấn đề gì - mọi thứ hoạt động như mong đợi.

Trong GitLab một số chi nhánh có thể được bảo vệ. Theo mặc định, chỉ người dùng Duy trì / Chủ sở hữu mới có thể cam kết với các nhánh được bảo vệ (xem tài liệu quyền ). masternhánh được bảo vệ theo mặc định - nó buộc các nhà phát triển đưa ra các yêu cầu hợp nhất để được các nhà bảo trì dự án xác nhận trước khi tích hợp chúng vào mã chính.

Bạn có thể bật và tắt bảo vệ trên các nhánh được chọn trong Cài đặt dự án (trong đó chính xác phụ thuộc vào phiên bản GitLab - xem hướng dẫn bên dưới).

Trên cùng một trang cài đặt, bạn cũng có thể cho phép các nhà phát triển đẩy vào các nhánh được bảo vệ. Với cài đặt này, bảo vệ sẽ bị giới hạn trong việc từ chối các hoạt động yêu cầu git push --force(rebase, v.v.)

Kể từ GitLab 9.3

Chuyển đến dự án: "Cài đặt" → "Kho lưu trữ" → "Mở rộng" trên "Chi nhánh được bảo vệ"

nhập mô tả hình ảnh ở đây

Tôi không thực sự chắc chắn khi thay đổi này được giới thiệu, ảnh chụp màn hình là từ phiên bản 10.3.

Bây giờ bạn có thể chọn người được phép hợp nhất hoặc đẩy vào các nhánh được chọn (ví dụ: bạn hoàn toàn có thể tắt các lần đẩy master, buộc tất cả các thay đổi đối với nhánh phải được thực hiện thông qua Yêu cầu hợp nhất). Hoặc bạn có thể nhấp vào "Unprotect" để loại bỏ hoàn toàn bảo vệ khỏi chi nhánh.

Kể từ GitLab 9.0

Tương tự như GitLab 9.3, nhưng không cần nhấp vào "Mở rộng" - mọi thứ đã được mở rộng:

Chuyển đến dự án: "Cài đặt" → "Kho lưu trữ" → cuộn xuống "Chi nhánh được bảo vệ".

nhập mô tả hình ảnh ở đây

Trước GitLab 9.0

Dự án: "Cài đặt" → "Chi nhánh được bảo vệ" (nếu bạn ít nhất là 'Master' của dự án cụ thể).

Cài đặt → Chi nhánh được bảo vệ

Sau đó nhấp vào "Unprotect" hoặc "Nhà phát triển có thể đẩy":

nhập mô tả hình ảnh ở đây


Đừng quên rằng có thể có một số quyền. Như đã nêu trong docs.gitlab.com/ee/user/project/protected_branches.html , ít nhất là 'Cấp phép chính'. Trong trường hợp của tôi, nhấn vào bánh xe cài đặt chỉ hiển thị tùy chọn 'Rời khỏi Project`.
CoolMind

1
Vì một số lý do, tôi đột nhiên phải thêm mình làm người dùng chính cho dự án của riêng mình.
jgillich

3
Tôi gặp vấn đề này vì tôi KHÔNG phải là thành viên của dự án OWN của tôi và tôi đã thúc đẩy dự án này ... Để thay đổi nó, trong dự án du lịch, nhấp vào thiết bị, Thành viên, tìm kiếm người dùng của bạn, đóng vai trò và nhấp vào "Thêm người dùng dự án ".
Loenix

Thật kỳ lạ, tôi cũng vậy, đã phải đưa bản thân vào một dự án cá nhân trên gitlab.com
Thomas Decaux

1
Thật tốt nếu bạn là người duy trì hoặc nhà phát triển duy nhất, vì vậy bạn có thể thay đổi cài đặt và chơi xung quanh nó. Nhưng nếu có một nhóm làm việc trên repo, thì đó không phải là một thực hành tốt để thay đổi sự bảo vệ của repo.
Mnemo

27

cho phiên bản doanh nghiệp GitLab 9.3.0

Theo mặc định, nhánh chính được bảo vệ không bảo vệ :)

1-Chọn bạn "dự án"

2-Chọn "Kho lưu trữ"

3-Chọn "nhánh"

4-Chọn "Cài đặt dự án"

5-In "Chi nhánh được bảo vệ" bấm để "mở rộng"

6 và sau khi nhấp vào nút "không bảo vệ"


Tôi chưa có "chi nhánh" vì tôi chưa tạo bất kỳ tệp nào trên kho lưu trữ này. Tôi đã tạo Readme.md và các chi nhánh xuất hiện.
Ikrom

1

Tôi đã gặp lỗi này trên "một nhánh trống" trên máy chủ gitlab cục bộ của tôi. Một số người đã đề cập rằng "bạn không thể đẩy lần đầu tiên trên một nhánh trống". Tôi đã cố gắng tạo một tệp README đơn giản trên gitlab thông qua trình duyệt của mình. Sau đó, mọi thứ đã được khắc phục một cách đáng kinh ngạc và vấn đề được giải quyết !! Tôi đề cập rằng tôi là chủ và chi nhánh không được bảo vệ.


Đây là số lẻ đối với tôi và tôi coi vấn đề này là một lỗi gitlab. Không thể chấp nhận được khi tôi không được phép đẩy vào một repo trống. Tôi hy vọng git guys có một câu trả lời cho nó.
Vahid F


1

Giải pháp đơn giản cho vấn đề này để trò chuyện nhanh với người có vai trò chủ sở hữu trong gitlab. Anh ta có thể đẩy một tệp READ.md hoặc tương tự để chỉ bắt đầu với. Sau đó, mọi thứ sẽ hoạt động như sớm hơn.


Nếu có thể, hãy cố gắng để có được vai trò chủ sở hữu trong kho lưu trữ. Khi bạn có vai trò chủ sở hữu, bạn có thể cam kết trực tiếp thành thạo. Thật khó chịu nhưng hook ngăn chặn không tạo ra các dự án mới không mong muốn. Không có hack xung quanh cho đến khi chủ sở hữu repo đẩy tập tin đầu tiên hoặc bạn có vai trò chủ sở hữu. Hi vọng điêu nay co ich.
kris

1

Tôi đã ở trên Windows khi vấn đề này xuất hiện.

Lỗi là lạ vì nó xảy ra trước khi tôi có thể nhập tên người dùng và mật khẩu của mình. Điều gì nếu có một bộ đệm hoặc một cái gì đó như thế này? Tôi đào nó trực tuyến và tìm thấy câu trả lời này trên diễn đàn hỗ trợ của gitlab :

Tôi mở "Bảng điều khiển => Tài khoản người dùng => Quản lý thông tin đăng nhập của bạn => Thông tin đăng nhập Windows" Tôi đã tìm thấy hai cho https: //@github.com và một là người dùng sai. Tôi đã xóa nó và trong lần "git đẩy" tiếp theo, tôi đã được đăng lại và cung cấp thông tin xác thực chính xác và nó đã hoạt động! Một số lưu ý khác - điều này có thể xảy ra với bất kỳ điều khiển từ xa nào.

Trong Thông tin xác thực Windows, tôi đã tìm thấy hai mục nhập GitLab cho một tài khoản cũ. Tôi loại bỏ cả hai và bây giờ nó hoạt động!

Bảng điều khiển:

nhập mô tả hình ảnh ở đây


@YanickSenn Bạn được chào đón. Tôi đã mất rất nhiều thời gian trên cái này. Vui vì nó giúp.
aloisdg chuyển đến codidact.com

1

Đây được coi là các tính năng trong Gitlab.

Maintainer / Ownertruy cập không bao giờ có thể buộc đẩy lại cho nhánh mặc định và được bảo vệ, như đã nêu trong tài liệu này nhập mô tả hình ảnh ở đây


1
Thật ra điều này không đáng tiếc chút nào. Đó chắc chắn là một điều tốt. Đó là một lớp bảo vệ bổ sung.
Chiramisu

0

Tôi đã trải nghiệm vấn đề tương tự trên kho lưu trữ của tôi. Tôi là chủ của kho lưu trữ, nhưng tôi đã gặp một lỗi như vậy.

Tôi đã không bảo vệ dự án của mình và sau đó được bảo vệ lại và lỗi đã biến mất.

Chúng tôi đã nâng cấp phiên bản gitlab giữa lần đẩy trước của tôi và phiên bản có vấn đề. Tôi cho rằng việc nâng cấp này đã tạo ra lỗi.


0

Các giải pháp trên giải thích rõ ràng vấn đề là gì; khi bạn không có quyền kiểm soát repo, cách tốt nhất để gửi mã của bạn là tạo một Fork của repo ban đầu và gửi mã của bạn tới repo mới này để sau này bạn có thể đẩy nó về mã gốc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.