2011-09-11 34 views
14

Pin của tôi đã chết trên macbook của tôi khi đẩy repo của tôi. Bây giờ tôi không thể chạy git statuskhông thể sửa lỗi đối tượng lỗi HEAD có trạng thái git

$ git status 
fatal: bad object HEAD 
fatal: git status --porcelain failed 

Tôi đã thử một vài gợi ý ive tìm thấy cho sửa lỗi đối tượng xấu.

$ git fsck --full 
dangling tree 65e856976b7aa7c73f15cd71defedb8a3d622a10 

Tôi đã thử git prunegit prune-packed

tôi vẫn có thể cam kết, stash, đẩy, nó dường như chỉ ảnh hưởng đến tình trạng git

Andy ý tưởng?

Cảm ơn

+0

Tôi gặp vấn đề tương tự. Cảm ơn các giải pháp! – Mauren

Trả lời

2

Nếu bạn .git/HEAD có bị hư hay điểm đến một đối tượng bị hỏng, bạn có thể thay đổi nó bằng tay hoặc bằng git checkout.

+0

Xin chào, không tạo ra bất kỳ sự khác biệt nào. Điểm đầu để refs/heads/master – Rob

+0

mặc dù, refs/heads/master không tồn tại. – Rob

+0

Vì vậy, bạn cần phải thanh toán một nhánh thực (và/hoặc khôi phục 'refs/heads/master' nếu nó tồn tại). Lưu ý rằng, các tham chiếu đó thường có trong '.git/packed-refs' ngay bây giờ. – wRAR

0

Thử thêm tất cả các tệp đã sửa đổi của bạn với git add filepath/file.ext trước trạng thái git.

28

Tôi đoán bạn giải quyết vấn đề này đã được nhưng tôi đã có này để và có thể sửa chữa nó đơn giản bằng cách chạy

git pull 

Điều này đã dẫn vào một điều kiện làm việc. các tập tin của bạn vẫn còn nguyên vẹn, bạn nên sao lưu thư mục git cục bộ của bạn và sau đó chạy lệnh git pull. sau đó bạn nên trở lại trong kinh doanh.

Nếu có tệp bị xóa (không nên xảy ra), bạn có thể sao chép chúng trở lại trên thanh toán đang hoạt động và cam kết từ đó.

+1

Sửa lỗi dễ dàng, hoạt động tốt. Cảm ơn vì tiền hỗ trợ! –

+1

Điều này làm việc cho tôi nhưng đã phải thay đổi cục bộ 'git stash' trước khi nó cho phép tôi kéo. Cảm ơn. –

2

Điều này xảy ra với tôi khi tôi vô tình thêm thùng/thư mục của mình vào một dự án Java Eclipse.

Sử dụng 'git pull' không hoạt động đối với tôi.

tôi cố định nó bằng cách:

  1. đóng Eclipse
  2. rm -rf bin
  3. git rm bin

Sau đó, tôi đã có thể 'git commit' và tiếp tục bình thường.

1

này đã làm việc cho tôi:

git fetch origin 
git reset --hard origin/master 
0

git checkout -f *branchname* làm việc cho tôi.

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