Lỗi Git đẩy móc nhận trước bị từ chối


167

Tôi đã chạy gitlabhq rails server trên máy ảo, theo 1-6 bước từ hướng dẫn này https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md và bắt đầu lệnh thực thi rails server sudo -u git -H bundle exec rails s -e production. Sau đó tôi đã tạo người dùng, sử dụng các công cụ quản trị và tạo dự án mới theo người dùng này. Sau đó, tôi đang cố gắng đẩy dự án hiện tại lên repo này như mọi khi. Nhưng ở bước cuối cùng, git push origin masterthất bại với lỗi

[từ chối từ xa] master -> master (hook nhận trước bị từ chối)

Thông tin bổ sung:

1) Tôi chưa kích hoạt người dùng (chủ dự án) thông qua liên kết kích hoạt email, vì tôi chưa định cấu hình dịch vụ bài đăng ở phía máy chủ và tôi không tìm thấy hướng dẫn cách thực hiện điều đó trong hướng dẫn này.

2) Máy chủ Gitlab tạo ra các mẹo làm thế nào để đẩy dự án vào repo và không có repositories/đường dẫn. Tôi có nghĩa là nó tạo ra git@mygitlabhost:user/repo.gitthay vì git@mygitlabhost:repositories/user/repo.gitđó là chính xác.

3) Khi tôi đã cố gắng để gỡ lỗi nó, tôi mở pre-receivekịch bản bên trong repo trên máy chủ và đã cố gắng để biến đầu ra (có 3 trong số họ): refs = ARGF.read, key_id = ENV['GL_ID']repo_path = Dir.pwdvà tìm thấy, KEY_ID đó là luôn luôn trống rỗng. Có lẽ vấn đề là ở đây ... Nếu vậy, xin vui lòng cho tôi đề xuất về cách khắc phục điều đó. Cảm ơn


13
Tôi thề, có ít nhất 1 người trong mỗi nhóm phát triển phần mềm thức dậy hàng ngày và nghĩ cách làm cho cuộc sống của các nhà phát triển khác khó khăn hơn nhiều.
samayo

Có vẻ như có một câu trả lời rất phổ biến phải có hiệu quả với hầu hết mọi người. Tuy nhiên, trong trường hợp của tôi, tin nhắn tương tự đã nhận được từ Git Hub khi có một sự thúc đẩy khác đang diễn ra từ một máy khác khi cố gắng đẩy.
Hack-R

Câu trả lời:


230

GitLab theo mặc định đánh dấu masterchi nhánh là protected(Xem phần Protecting your codetrong https://about.gitlab.com/2014/11/26/keep-your-code-protected/ why). Nếu vậy trong trường hợp của bạn, thì điều này có thể giúp:

Mở dự án của bạn> Cài đặt> Kho lưu trữ và đi đến "Chi nhánh được bảo vệ", tìm chi nhánh "chính" vào danh sách và nhấp vào "Unprotect" và thử lại.

thông qua https://gitlab.com/gitlab-com/support-forum/issues/40

Đối với phiên bản 8.11 trở lên cách thực hiện tại đây: https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-certain-users


8
Giao diện người dùng đã thay đổi một chút: Sau khi dự án "Cài đặt", nhấp vào tab "Kho lưu trữ". Sau đó "Chi nhánh được bảo vệ"
Donn Lee

Vì vậy, tôi đã gặp vấn đề tương tự OP và giải pháp này hiệu quả với tôi, cảm ơn! Nhưng bây giờ tôi đang tự hỏi, tại sao? Tôi đã sử dụng gitlab được một thời gian và đột nhiên tôi phải làm điều này? Những gì đã thay đổi?
Andrew Lamarra

2
GitLab 8.11các tùy chọn đã thay đổi một chút, hãy kiểm tra các chi tiết ở đây
Arghya C

Đối mặt với cùng một vấn đề. Ở đây tôi thậm chí không thể đẩy chi nhánh khác. Tôi đang đẩy nó lần đầu tiên mặc dù.
Santosh Kadam

1
tôi đã gỡ bỏ không được bảo vệ nhưng điều gì sẽ xảy ra bây giờ? Bất cứ ai khác trên thế giới có thể làm việc trên repo này?
Flutterer

14

Sau khi giải quyết vấn đề trong máy cục bộ của tôi:

A. Trước tiên, hãy đảm bảo rằng bạn đang sử dụng nhật ký chính xác về chi tiết để kết nối với Máy chủ Bitbucket (ví dụ: tên người dùng / mật khẩu / khóa SSH thuộc về bạn) 

B. Sau đó, đảm bảo rằng tên / địa chỉ email được đặt chính xác trong cấu hình Git cục bộ của bạn: Đặt cấu hình Git cục bộ của bạn cho tài khoản mà bạn đang cố gắng thực hiện (kiểm tra xác nhận rằng bạn là người đã cam kết các tệp) * Lưu ý rằng đây là trường hợp nhạy cảm, cả về tên và địa chỉ email * Nó cũng nhạy cảm với không gian - một số tài khoản công ty có thêm khoảng trắng / ký tự trong tên của họ, vd. " Contractor/ space space(LDN)". Bạn phải bao gồm cùng số lượng không gian trong cấu hình của mình như trên Máy chủ Bitbucket. Kiểm tra điều này trong Notepad nếu bị kẹt.

C. Nếu bạn đang sử dụng tài khoản sai, chỉ cần chuyển thông tin đăng nhập tài khoản của bạn (tên người dùng / mật khẩu / khóa SSH) và thử đẩy lại.

D. Khác, nếu cấu hình cục bộ của bạn không chính xác, bạn sẽ cần phải sửa đổi nó

Dành cho MAC

open -a TextEdit.app ~/.gitconfig

LƯU Ý: Bạn sẽ phải sửa chữa các cam kết cũ mà bạn đang cố gắng đẩy.

  1. Sửa đổi cam kết cuối cùng của bạn:

    > git commit --amend --reset-author
    
      
    <save and quit the commit file text editor that opens, if Vim then
    :wq to save and quit>
    
  2. Hãy thử đẩy lại cam kết của bạn:

    > git push
    

12

Trong trường hợp của tôi, đội dẫn đầu của tôi để tạo ra một repo (repo là trống) và gán cho tôi như phát triển vì vậy khi tôi đẩy vào mã trực tiếp để làm chủ các lỗi tôi đã phải đối mặt với ! [remote rejected] master -> master (pre-receive hook declined)Vậy làm thế nào nó đã được cố định mà ông giao cho tôi như duy trì vì vậy tôi đã có thể đẩy mã trực tiếp đến chủ.


10

Có vẻ như vấn đề là với một số dịch vụ, như sidekiq. Chạy sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=productionđầu ra tất cả các vấn đề với cấu hình.



2

Bạn có thể không có quyền truy cập của nhà phát triển vào dự án hoặc chi nhánh chính. Bạn cần truy cập dev để đẩy công việc mới lên.

Công việc mới có nghĩa là chi nhánh mới và cam kết.


2

Có thể không phải như vậy, nhưng đây là giải pháp cho lỗi " móc nhận trước bị từ chối " của tôi:

Có một số kho lưu trữ chỉ cho phép sửa đổi thông qua Yêu cầu kéo . Điều này có nghĩa là bạn phải

  1. Tạo một nhánh mới lấy làm cơ sở cho nhánh mà bạn muốn đẩy các thay đổi của mình sang.
  2. Cam kết và đẩy các thay đổi của bạn đến chi nhánh mới.
  3. Mở Yêu cầu Kéo để hợp nhất chi nhánh của bạn với chi nhánh ban đầu.

0

Bạn cần thêm khóa ssh vào tài khoản git của mình, nếu nó bị lỗi thì hãy xóa khóa ssh trước đó và tạo khóa ssh mới sau đó thêm.


Điều đó đã không giúp đỡ. :( Đã thử nghiệm trên cả hai tài khoản - root và myuser trên vm và máy cục bộ.
Hroft 4/215

kiểm tra git remote -v, repo git của bạn có được thêm hay không?
Hardik Hardiya 4/2/2015

Đầu ra 'git remote -v': origin git @ mygitlabhost: kho lưu trữ / người dùng / repo.git (tìm nạp) nguồn gốc git @ mygitlabhost: kho lưu trữ / người dùng / repo.git (đẩy)
Hroft

Nếu bạn đang sử dụng gitlab được lưu trữ, vấn đề có thể nằm ở phía họ. Chỉ cần thử lại vài phút sau.
Erik Aronesty

0

Tôi giải quyết vấn đề này bằng cách thay đổi remote 'origin' urltừ httpđể gitgiao thức trong.git/config


0

Chuyển đến Cài đặt dự án -> Móc -> (Dưới) Móc nhận trước

Vô hiệu hóa cp yêu cầu tham chiếu vấn đề trong các cam kết


0

Tôi đã vấp phải lỗi tương tự khi sử dụng BitBucket. Tôi đã có một repo Git cục bộ mà tôi muốn sao lưu trực tuyến, vì vậy tôi đã tạo một kho lưu trữ mới từ tài khoản BitBucket của mình (sử dụng giao diện web).

Sau khi chạy git remote add origin git@bitbucket.org:StatMarianne/<a private repo>.git, tôi không chạy được git push origin master(tôi thường không sử dụng tùy chọn -ugit push vì tôi không ngại gõ đầy đủ tên repo và chi nhánh khi đẩy và kéo).

Lỗi đọc:

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'

Nhưng chi nhánh địa phương của tôi đã được đẩy thành công khi tôi chạy git push -u origin master(theo đúng hướng dẫn của BitBucket).

Tôi thấy thật đáng ngạc nhiên, vì -u ( --set-upstream) chỉ nên "thêm tham chiếu ngược dòng (theo dõi) ..." Dù sao đi nữa.


-1

Tôi đã đối mặt với cùng một vấn đề, điều này là do tôi đang đẩy mã của mình trực tiếp vào nhánh chính và tôi không có quyền cho việc này. Vì vậy, tôi đẩy mã của mình vào một nhánh mới và sau đó, tôi đã tạo một yêu cầu kéo để hợp nhất với chủ.

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.