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


206

Khi tôi thử và thực hiện một thay đổi tôi đã cam kết, tôi gặp phải lỗi sau ...

git.exe push -v --progress  "origin" iteration1:iteration1

remote: *********************************************************************
To ssh://git@mycogit/cit_pplus.git
! [remote rejected] iteration1 -> iteration1 (pre-receive hook declined)
error: failed to push some refs to 'ssh://git@mycogit/cit_pplus.git'

Chuyện gì đang xảy ra vậy?


8
Có gì trong hookc mycogit trước khi nhận?
cướp mayoff

Bạn sẽ không cố gắng đẩy các tập tin lớn vào github chứ?
Adam F

FYI: hôm nay tất cả các đồng nghiệp của tôi đều gặp phải lỗi này, cuối cùng chúng tôi quyết định khởi động lại máy chủ stash của mình và nó đã được sửa chữa một cách kỳ diệu. Chúng tôi không biết vấn đề thực sự là gì.
T_D

Câu trả lời:


125

Bạn nên hỏi bất cứ ai duy trì repo tại git@mycogit/cit_pplus.git.

Cam kết của bạn đã bị từ chối bởi pre-receivehook của repo đó (đó là tập lệnh có thể định cấu hình người dùng nhằm phân tích các cam kết đến và quyết định xem chúng có đủ tốt để được chấp nhận vào repo không).

Nó cũng là một ý tưởng tốt để yêu cầu người đó cập nhật hook, vì vậy nó sẽ in các lý do từ chối.

Nếu người bảo trì là chính bạn, thì có vẻ như bạn đã gặp sự cố với thiết lập của mình ở phía máy chủ. Hãy chia sẻ thêm thông tin sau đó.


7
Trong trường hợp của tôi, BitBucket đã xác thực nội dung tin nhắn cam kết, đối mặt với nó với vé JIRA, hiện đang ngoại tuyến tại thời điểm đó.
Vítor Neil Avelino

1
Vì vậy, khi nó trở thành trực tuyến cố định của nó?
chia sẻ

5
Trong trường hợp của tôi, đó là sự không phù hợp trong tên người dùng mà các xác nhận được tạo và tên người dùng trong BitBucket. Tôi không được phép cập nhật tên người dùng BitBucket, vì vậy tôi phải đặt lại các cam kết của mình và cam kết lại với tên người dùng đã cập nhật. Bạn có thể cập nhật tên người dùng git bằng lệnh nàygit config user.name 'UpdatedUserName'
MM

3
Trong trường hợp của chúng tôi bitbucket đã không cho phép bất cứ ai đẩy đến chi nhánh này.
Ramon Fincken

Trong trường hợp của tôi, tôi đã phải tìm các cài đặt repo trên bitbucket và vô hiệu hóa trình xác minh theo cài đặt Móc.
Sizons

78

Tôi cá rằng bạn đang thử một cú đẩy không nhanh và móc chặn nó. Nếu đó là trường hợp, chỉ cần chạy git pull --rebasetrước khi đẩy để phản ứng lại các thay đổi cục bộ của bạn trên cơ sở mã mới nhất.


Điều này thật tuyệt. Bây giờ tôi có thể một lần nữa đẩy và kéo, nhưng trước khi tôi cần phải thiết lập ngược dòng git branch --set-upstream-to=origin/myBranch. +1 cho câu trả lời của bạn.
AlokeT

Trong một kho lưu trữ mới, tôi đã đẩy một nhánh (không phải chủ), sau đó khởi động lại nó và gặp lỗi trong quá trình đẩy. Tôi đã không tìm thấy web-hook. Tôi đã thực hiện git pull --rebase, phải nổi loạn một lần nữa và có thể đẩy chi nhánh. Cuối cùng tôi thấy rằng chi nhánh của tôi đã được bảo vệ.
CoolMind

60

Kích thước tập tin là quan trọng. Có giới hạn ~ 120 MB cho một tệp. Trong trường hợp của tôi, .gitignore sử dụng Visual Studio có tệp được liệt kê, nhưng tệp vẫn được cam kết. Khi sử dụng git cli, chúng ta có thể biết thêm thông tin chi tiết về lỗi.

hook trước nhận bị từ chối là kết quả của tập tin lớn. Về cơ bản xác nhận đẩy.

Để giải quyết nó, tôi đã xóa cam kết cuối cùng bằng cách sử dụng:

git reset --soft HEAD~1

Sau đó tôi loại trừ các tập tin từ cam kết.

Lưu ý: Sử dụng HEAD ~ N để quay lại N số lần xác nhận trước đó. (tức là 3, 4) Luôn sử dụng khóa chuyển đổi --soft để duy trì các thay đổi trong thư mục

hy vọng nó giúp.


Điều này giúp ích vì vấn đề của tôi là một tệp kết xuất SQL không mong muốn (kích thước tệp 155mb) đã bị đẩy (do tai nạn).
Mehrdad Dastgir

1
Giới hạn kích thước tệp tùy thuộc vào nhà cung cấp dịch vụ lưu trữ của bạn. GitHub có giới hạn ở kích thước đó, đối với những người khác, nó khác nhau và git tự lưu trữ tự nhiên không có giới hạn đó.
1615903

1
Bạn sẽ làm gì nếu bạn đã có một vài cam kết sau khi bị từ chối? đây là trường hợp của tôi, tôi có một tệp lớn không mong muốn (627 MB) trong một trong những cam kết trước đó trước khi cố gắng đẩy sang repo
leeCoder

Tôi đã có một tệp CSV được tải lên một cách tình cờ. Vì vậy, trong trường hợp của tôi, lỗi là do điều đó.
tonhozi

Nếu bạn có một số cam kết, hãy tăng chỉ mục để đặt lại đầu cho cam kết đó. Ví dụ: sử dụng HEAD ~ 3 để quay lại ba lần xác nhận trước đó. Luôn sử dụng khóa chuyển đổi --soft để duy trì các thay đổi trong thư mục.
ozkary

13

Điều này có thể là do bạn không có quyền truy cập để đưa một cam kết đến một chi nhánh như master. Bạn có thể yêu cầu người bảo trì cho bạn quyền đẩy các cam kết.


Tôi nghĩ điều này là chính xác, nhưng điều thú vị là VS dường như đang cố gắng đẩy sang nhánh cha mẹ chứ không phải tên nhánh thực sự đến điều khiển từ xa. Vì vậy, nếu nhánh cha mẹ được bảo vệ thì điều này dường như đang xảy ra nhưng dường như không có cách nào để sửa lỗi này trong VS và bạn phải chuyển sang dòng cmd.
Đánh dấu

9

Trong trường hợp của tôi, tôi nhận được thông báo này vì chi nhánh được đánh dấu là 'Được bảo vệ' trong GitLab.


1
Xem stackoverflow.com/a/28832644/2914140 hoặc dự án GitLab> Cài đặt> Kho lưu trữ, sau đó Protected Branchesđể tìm thấy nó.
CoolMind

8

Tôi nhận được thông báo này khi máy chủ GitLab đang trải qua một số thay đổi. Ngày hôm sau đẩy mạnh hoạt động tốt. Dù sao, như những người khác đã chỉ ra, hãy kiểm tra với người bảo trì của bạn để chắc chắn.


1
Chỉ có vấn đề này và tôi đoán GitLab đã thực hiện thay đổi. Đã cho nó 10 phút và nó hoạt động. Tôi đã không thay đổi bất cứ điều gì.
woter324

Chỉ có vấn đề này là tốt. Đối với bất kỳ ai có thể muốn kiểm tra xem đây có phải là trường hợp không: status.gitlab.com
Renan Ferrari

5

Tôi gặp vấn đề này khi cố gắng hợp nhất các thay đổi với kích thước tệp lớn hơn kho lưu trữ từ xa cho phép (trong trường hợp của tôi là GitHub)


2
Trong trường hợp của tôi ngay cả sau khi xóa tệp, GitHub vẫn phàn nàn ... nhưng câu trả lời này đã thực hiện thủ thuật stackoverflow.com/questions/19573031/
Thẻ

5

Tôi gặp phải vấn đề tương tự.
Điều giải quyết nó cho tôi là chuyển sang chi nhánh khác và sau đó trở lại chi nhánh ban đầu.

Không chắc nguyên nhân gạch chân là gì, nhưng điều này đã khắc phục nó.


Tôi cũng không thể đẩy sang chi nhánh mới
zabop


2

Trong trường hợp nó giúp được ai đó:

Tôi đã có một repo trống không có nhánh chính để không bảo vệ (trong Gitlab) vì vậy trước khi chạy git push -u origin --all

  • Tôi phải chạy git push -u origin mastertrước
  • tạm thời không bảo vệ chi nhánh
  • đẩy phần còn lại ( --all& --tags)

2

Tôi đã gặp phải lỗi tương tự, khi kiểm tra tôi có quyền truy cập của nhà phát triển và không thể xuất bản một chi nhánh mới. Thêm quyền truy cập cao hơn đã giải quyết vấn đề này. (Gitlab)


2

Tôi đã nhận được lỗi này với ý chính GitHub. Tôi đã cố gắng để thực hiện một cam kết với các tập tin trong thư mục con. Hóa ra ý chính chỉ có thể có tập tin trong thư mục gốc.


Có cái này quá. Hóa ra repo có tập tin "snippets\\csharp.json"khiến git trên windows gặp khó khăn.
Carl Walsh

2

Xóa tùy chọn nhánh được bảo vệ hoặc cho phép các vai trò bổ sung như nhà phát triển hoặc quản trị viên cho phép những người dùng này gặp phải lỗi này để thực hiện hợp nhất và đẩy.


1

Trong trường hợp của tôi, chúng tôi có các hook cho thông điệp cam kết, tập lệnh máy chủ của chúng tôi chấp nhận các cam kết nếu chúng có định dạng đặc biệt cho thông điệp cam kết "<JIRA ID><Message>". Nó (hook) từ chối cam kết nếu vé Jira tương ứng không tồn tại hoặc có một số biểu tượng đặc biệt trong thông điệp cam kết. Tôi gặp phải lỗi này khi tôi thêm /, [,> vv trong thông báo cam kết, loại bỏ những lỗi đó hoạt động tốt.


Câu trả lời này không có khả năng giúp đỡ, vì người đăng ban đầu (và bất kỳ ai khác truy cập trong tương lai) sẽ có một tập lệnh khác được định cấu hình như một cái móc nhận trước.
aronisstav

1

Điều này thực sự xảy ra khi YACC được kích hoạt ở phía máy chủ trong BitBucket. YACC cho phép các tên vấn đề JIRA được đề cập trong thông điệp cam kết. Vì vậy, bất cứ khi nào bạn cam kết bất cứ điều gì ít nhất hãy giữ số JIRA của bạn vào tin nhắn cam kết và sau đó bạn có thể thêm tin nhắn của riêng mình.


1

Tôi đã sử dụng GitKraken và chúng tôi đã tạo ra một chi nhánh địa phương, sau đó chúng tôi đã hợp nhất hai chi nhánh từ xa trong đó và sau đó chúng tôi đã cố gắng đẩy chi nhánh địa phương về nguồn gốc. Nó không hoạt động với cùng một thông báo lỗi.

Các giải pháp là để tạo ra các chi nhánh địa phương và đẩy nó đầu tiên về nguồn gốc và sau đó làm việc hợp nhất.


1

Vấn đề: "PUSH Không thể giới thiệu / đầu / - móc nhận trước bị từ chối"

Tôi đã phải đối mặt với vấn đề không thể đẩy các thay đổi của mình sang nhánh gốc và bất cứ điều gì để làm chủ nhánh của kho lưu trữ dự án cụ thể vì kích thước của repo đó vượt quá giới hạn cứng là 2GB. Nó đã ném lỗi. Đó là bởi vì chúng tôi đã vô tình đẩy dữ liệu thử nghiệm lên bitbucket từ các nhánh thử nghiệm khác.

PUSH Không thể giới thiệu / đầu / - móc nhận trước bị từ chối

Vì vậy, đã thử kiểm tra là giống với các dự án khác và họ không gặp vấn đề gì.

Sửa chữa:

Đồng nghiệp của tôi nhận thấy rằng khi chúng tôi nhân bản dự án trở lại địa phương, kích thước của dự án là 110MB. Vì vậy, sau đó chúng tôi bắt đầu làm sạch các nhánh chúng tôi đã sáp nhập trước đó và các nhánh hoạt động không còn cần thiết nữa. Khi việc dọn dẹp được thực hiện cho một vài chi nhánh, chúng tôi nhận ra kích thước của repo đã giảm mạnh từ 2GB xuống 120MB. Sau đó, chúng tôi đã cố gắng đẩy các thay đổi đến chi nhánh của tôi và nó đã hoạt động.


1

Trong trường hợp của tôi, tôi đã có một kho lưu trữ mới, đã đẩy một nhánh ('UCA-46', không phải 'master'), đã khởi động lại nó, buộc phải đẩy lại và gặp lỗi. Không có web-hook tồn tại. Tôi đã thực hiện git pull --rebasenhư @ThiefMaster khuyên, phải tấn công lại và có thể đẩy chi nhánh. Nhưng đó là một cách kỳ lạ và khó khăn.

Sau đó, tôi thấy Git đẩy lỗi nhận trước móc bị từ chối . Tôi thấy rằng chi nhánh của tôi đã được bảo vệ . Tôi gỡ bỏ bảo vệ và có thể buộc phải đẩy lại.

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


0

Tôi đã nhận được điều này khi cố gắng đẩy đến một ví dụ dokku. Hóa ra đĩa đã đầy trên máy chủ của tôi.

Đã chạy: du -f

Và kết quả là:

Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs           100M  4.4M   95M   5% /run
/dev/xvda1      7.8G  7.4G  8.9M 100% /

0

Đối với tôi Ủy quyền trên máy chủ git từ xa giải quyết vấn đề. nhập mô tả hình ảnh ở đây


0

Trong trường hợp của tôi, đó là vì tôi đã vô tình thêm một tệp khổng lồ vào lần đẩy không được cam kết của mình và tôi không thể thoát khỏi nó cho dù có kéo hay đặt lại hay rm tôi đã làm gì sau đó.

giải pháp bẩn của tôi nhưng giải pháp khả thi là đổi tên thư mục hiện tại, sao chép lại thư mục thành cục bộ và phản ánh các thay đổi theo cách thủ công sang thư mục cục bộ được lặp lại ...

Nghe có vẻ không hay nhưng hoạt động ...


1
Tôi đã đối mặt với cùng một vấn đề và sử dụng $ git reset --soft HEAD ~ 1 như những gì @ozkary đề xuất đã giúp.
jarrettyeo

0

Lỗi đối với tôi là dự án không có bất kỳ chi nhánh nào được tạo và vai trò của tôi là nhà phát triển, vì vậy tôi không thể tạo bất kỳ chi nhánh nào, yêu cầu họ cấp cho tôi các quyền thích hợp và mọi thứ theo thứ tự ngay bây giờ!


0

Một nhánh mặc định (ví dụ master) chưa tồn tại cho điều khiển từ xa của bạn. Vì vậy, trước tiên bạn cần tạo masterchi nhánh trong máy chủ từ xa git (ví dụ: tạo README.mdtệp mặc định ) sau đó thử pushtất cả các nhánh cục bộ hiện có của bạn bằng lệnh này:

git push -u origin --all

0

Đối với tôi mọi thứ đều hoạt động tốt cho đến khi Bitbucket tự động thay đổi chính sách của họ ngày hôm nay (21 tháng 4 năm 2020). Điều này xảy ra để phù hợp với một tính năng mới được giới thiệu gần đây có tên là Không gian làm việc , vì vậy tôi nghi ngờ nó có liên quan đến điều đó.

Giải pháp thay thế : Tôi (với tư cách là Quản trị viên) đã làm theo hướng dẫn để thêm địa chỉ email cho Người dùng trong Giao diện người dùng (có thể tìm thấy email bạn đang sử dụnggit config --list

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


-7

Chỉ định phiên bản node.js có thể giải quyết vấn đề như

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
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.