2013-05-22 22 views
6

Hiện tại, tôi đang làm việc trên nhánh 'external_pub'. Tôi đã thực hiện vài thay đổi trong một tập tin, thêm vào đó, cam kết & sau đó đã cố gắng để đẩy:: móc từ chối cập nhật ref/heads/external_pub khi đang đẩy chi nhánh

git push origin external_pub 

Nhưng điều này là kết quả vào một lỗi:

remote: error: hook declined to update refs/heads/external_pub 
To ssh://XXX/testing.git 
! [remote rejected] external_pub -> external_pub (hook declined) 
error: failed to push some refs to 'ssh://XXX/testing.git' 

Sau đó, tôi đã cố gắng để đẩy chi nhánh mà không cần bất kỳ thay đổi xem điều gì xảy ra (chỉ để cô lập vấn đề). Tôi sau:

git reset --hard <commit_id> (to reset to last working sha commit) 
git status 

Trên lệnh cho thấy:

# On branch external_pub 
# Your branch is ahead of 'development' by 5 commits. 
# 
nothing to commit (working directory clean) 

Sau đó

git pull origin external_pub 

Nó cho thấy: chi nhánh của bạn đã tối đa ngày

Sau đó

git push origin external_pub 

Lần này, nó cũng hiển thị lỗi giống như trên. Bạn có thể giúp tôi giải quyết vấn đề này không?

Trả lời

7

Có một số git hook trên máy chủ đã từ chối thao tác đẩy. Trích dẫn:

These scripts run before and after pushes to the server. The pre hooks can exit non-zero at any time to reject the push as well as print an error message back to the client; you can set up a push policy that’s as complex as you wish.

Để tìm hiểu lý do tại sao, bạn cần phải biết móc móc. Móc được lưu trữ trong thư mục hooks bên trong thư mục git (ở đầu từ xa) - tìm số nhận trước móc hoặc cập nhật móc và kiểm tra điều đó.

+0

Trong thư mục .git/hooks của tôi, không có pre-receive.sample, tôi đã nhận được mẫu – TDHM

+0

Nó phải ở trên điều khiển từ xa chứ không phải trên repo cục bộ của bạn. – 1615903

0

Trong OSX, nó thường gây ra do thiếu GEM giữa cài đặt ruby ​​pha và Apple ruby ​​2.0 (mặc định).

Bao gồm 'yêu cầu json/ext/parser' hoặc tiện ích bổ sung tương tự không được tìm thấy và ngoại lệ tại điểm yêu cầu.

0

Tôi đã giải quyết vấn đề này. Thông thường tôi sử dụng VSTSID (Visual Studio Team Services) trong tin nhắn trong khi cam kết mã. Sử dụng các bước dưới đây:

  1. git commit --amend (bây giờ thời gian của mình để chỉnh sửa của bạn cam kết thông báo)

  2. git commit -m "vs [your_vsts_id] -your_commit_message>" sau đó nhấn

  3. i (nút bàn phím)

  4. Esc (nút bàn phím)

  5. : wq (để tiết kiệm)

Sau đó bạn sẽ có thể đẩy (git push).

Nếu bạn vẫn gặp sự cố, hãy nhập git reset --soft HEAD^ vào git bash. Giờ đây, bạn có thể xem tất cả các tệp của mình bằng màu xanh lục.Nó có nghĩa là, các tập tin một lần nữa đã sẵn sàng cho cam kết. Tùy thuộc vào yêu cầu của bạn, bạn có thể sử dụng lệnh reset (git reset).

Các vấn đề liên quan