2012-12-14 31 views
17

Sau lần hợp nhất cuối cùng vào nhánh chính của kho lưu trữ Git của tôi, tôi đã mất khả năng sao chép kho lưu trữ.Git refs/remotes/origin/master không trỏ đến một đối tượng hợp lệ

 
Cloning into test-repository... 
remote: Counting objects: 126084, done. 
remote: Compressing objects: 100% (28327/28327), done. 
Receiving objects: 100% (126084/126084), 132.63 MiB | 29.30 MiB/s, done. 
remote: Total 126084 (delta 96101), reused 126078 (delta 96095) 
Resolving deltas: 100% (96101/96101), done. 
error: refs/remotes/origin/master does not point to a valid object! 
error: Trying to write ref refs/heads/master with 
     nonexistant object 951aca8051823b2f202d30c9cb05401ef17618c6 

Fisheye, một công cụ kho lưu trữ, được báo cáo:

 
Unable to fetch from remote repository: 
/var/atlassian/application-data/fisheye/managed-repos/MYREPONAME.git 
error: unable to find 0d998c99b6d01e8aabca72b1934802acf90b8fc9, 
fatal: object 0d998c99b6d01e8aabca72b1934802acf90b8fc9 not found 

cam kết cuối cùng trong kho trên chi nhánh tổng thể là:

 
commit 0d998c99b6d01e8aabca72b1934802acf90b8fc9 
Merge: a6ea4b3 1f373a9 
Date: Fri Dec 14 13:57:24 2012 +0200 

Merge branch 'new_error_code' 

Tôi đã thử:

cd /var/atlassian/application-data/fisheye/managed-repos/MYREPONAME.git 
git gc 
git fsck --full 
git reflog expire --expire=0 --all 
git update-ref 
git gc --aggressive 

Các câu hỏi sau đã làm không giúp trường hợp của tôi:

Trả lời

29
git gc 
git fsck --full 
git reflog expire --expire=0 --all 
git update-ref -d 0d998c99b6d01e8aabca72b1934802acf90b8fc9 
git gc --aggressive 
git remote update --prune 

và đã hoạt động!

+0

nó quá chậm và tốn nhiều tiền. – suiwenfeng

+3

@Matt bạn có thể xây dựng thêm những gì xảy ra ở đây không? – andi

+0

Không có lời giải thích nào cả. Bạn nên nghĩ rằng nhiều người hơn có thể cần điều này trong tương lai = \ – PlayHardGoPro

1

Thông thường bạn có thể làm:

git reflog master 

này sẽ cung cấp cho bạn một danh sách các vị trí bí quyết cuối cùng mà thầy đã chỉ vào.

Một khi bạn biết điều này bạn có thể tạo một chi nhánh tạm thời để phiên bản cũ của chủ nghĩa

git branch temp [email protected]{1} 

tạm Sau đó kiểm tra và xem nếu nó là theo đúng thứ tự. Nếu bạn không nhìn thấy bất cứ điều gì có thì các lệnh mà bạn đã làm trước đó (xóa các reflog, xóa cam kết lơ lửng, vv) có lẽ đã xóa sạch tất cả các cách để phục hồi.

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