2012-05-13 33 views
26

trong khi kéo vào kho git của tôi từ máy chủ trung tâm của chúng tôi, lỗi này xảy ra:Không thể kéo, git không thể giải quyết tham khảo ORIG_HEAD

$ git pull origin master 

From http://aaa/repo 
* branch   master  -> FETCH_HEAD 
error: unable to resolve reference ORIG_HEAD: No such file or directory 
fatal: Cannot lock the ref 'ORIG_HEAD'. 

Tôi đã thử git gc (với --prune = bây giờ) và tìm kiếm một lỗi tương tự, không may là không có may mắn.

+0

có lẽ bạn có thể xem xét đánh dấu câu hỏi của Brian là câu trả lời chính xác, vì nó có nhiều phiếu bầu hơn? –

Trả lời

82

Tôi gặp sự cố này và tôi đã giải quyết vấn đề này bằng cách xóa tệp .git/ORIG_HEAD sau đó thực hiện lại thao tác kéo. Các tập tin .git/ORIG_HEAD là 0 byte thay vì tham chiếu git nó được cho là có chứa, vì vậy tôi chỉ cần loại bỏ nó.

+0

Bất kỳ ý tưởng nào gây ra vấn đề này? – earthmeLon

+0

@earthmeLon Tôi không chắc chắn. Có thể là một vấn đề về hệ thống tập tin. –

+0

Loại bỏ điều này cũng cố định lời nhắc mật khẩu gây phiền nhiễu trên mỗi lần đẩy/kéo – RayLoveless

9

Kiểm tra git remote prune origin được đề cập ngoài số git gc --prune=now trong "git pull fails “unalble to resolve reference” “unable to update local ref”".

Nếu bạn có một .git/rebase-merge, hãy xem xét loại bỏ nó (như trong "git rebase and deleted rebasing branches causing “Interactive rebase already started” error message")

Kiểm tra cũng là nội dung của .git/HEAD, như trong this issue.

Nếu đây là một tham nhũng repo của một số loại (xem "Git corrupt master branch"), hãy thử đầu tiên nhân bản repo của bạn một lần nữa, và lại áp dụng những thay đổi hiện tại của bạn trên đầu trang của repo đó (thông qua git format-patch nếu bạn cần)

+1

Cảm ơn, rất tiếc là không có bản sửa lỗi nào được đề cập làm việc, vì vậy tôi phải sao chép lại và áp dụng bản vá. – vvondra

8

Câu trả lời này không giải quyết được sự cố của OP, nhưng giải quyết vấn đề tương tự.

Tôi đã có một vấn đề tương tự (Tôi đã error: cannot lock ref ... is at ... but expected ...), nhưng đó là vì có hai chi nhánh tại các repo có cùng tên, nhưng với trường hợp khác nhau. Có lẽ câu trả lời này có thể giúp mọi người đến đây, tôi không thể tìm thấy câu trả lời ở nơi khác. Tôi đã xóa một trong các nhánh và sau đó xóa tham chiếu tương ứng của nó từ: .git/ref/.../branch_name, sau đó git kéo. Điều này xảy ra do tôi làm việc trên một hệ thống tệp phân biệt chữ hoa chữ thường, trong khi hai nhánh đã được đẩy vào một hệ thống tệp phân biệt chữ hoa chữ thường. Ví dụ, hai chi nhánh là BRANCH1branch1 và cả hai đều nằm trong khoảng từ origin từ xa. Đầu tiên, xóa một trong các nhánh, ví dụ: BRANCH1. Sau đó, xóa ref của nó:

rm .git/refs/remotes/origin/BRANCH1 

Sau đó, git pull và sẽ ổn thôi.

+0

Điều này đã giúp tôi. Cảm ơn vì đăng. – dima

1

Tệp này được tạo khi bạn git pull trong kho lưu trữ để không git pull trong cùng một kho lưu trữ nhiều hơn tại thời điểm đó và nó sẽ bị xóa khi quá trình kết thúc. Nếu quá trình chết hoặc trở thành zombie, thì tệp sẽ không bị xóa và bạn phải kiểm tra thủ công nếu quá trình git vẫn tồn tại. Nếu quá trình không tồn tại thì bạn phải xóa tệp và thử lại git pull.

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