tệp chỉ mục nhỏ hơn mong đợi


81

Sáng nay, tôi bắt đầu gặp lỗi này từ git:

nghiêm trọng: tệp chỉ mục nhỏ hơn mong đợi

gây tử vong: trạng thái git - sứ không thành công

Bất kỳ ý tưởng về những gì đang xảy ra và làm thế nào để giải quyết nó?


Bạn đã thử vertis
Gal Bracha

Có, tôi đã thử nó trước khi đăng. Vấn đề là với các mô-đun con của tôi liên tục làm hỏng tệp chỉ mục của tôi (không biết tại sao).
karellm

@karellm Bạn có biết tại sao điều này lại xảy ra không?
crmpicco

Không thành thật mà nói, tôi đã không điều tra điều gì đã gây ra nó và nó cũng ngừng xảy ra.
karellm

Mẹo: Theo kinh nghiệm của tôi, điều này có thể do thư mục NFS không cập nhật. Nếu repo của bạn trên NFS, chỉ cần đợi vài phút trước khi cố gắng khắc phục sự cố. Tôi có điều này sau khi kéo từ một máy và sau đó kiểm tra trạng thái trên máy khác, cả hai máy đều gắn cùng một NFS.
ggll

Câu trả lời:


107

Tệp chỉ mục đã bị hỏng, nhưng nó có thể dễ dàng tạo lại. Chỉ cần loại bỏ nó ...

rm .git/index

Sau đó, bạn có thể thêm lại các tệp mà bạn đang cố gắng xử lý.


Như đã nói ở trên, nó không hoạt động do xung đột với một mô-đun con đang làm hỏng chỉ mục của tôi hết lần này đến lần khác ... Tôi đã xóa mô-đun con, xóa chỉ mục và thêm tất cả. Cuối cùng nó đã hoạt động. Cảm ơn!
karellm

3
Lý do tại sao điều này xảy ra? Tôi đã có hai lần điều này xảy ra trong hai tuần qua và tôi không thể thấy lý do cho nó.
crmpicco

7
Điều này đã không làm việc cho tôi. Trước lỗi này, tôi đã có một bản sao hoạt động gần như sạch sẽ. Sau khi xóa tệp chỉ mục và chạy git add .nó hoạt động như thể mọi tệp đều mới và cần một cam kết.
Đánh dấu

1
Cũng không hoạt động khi có một mô-đun con. Chỉ cần đặt lại (câu trả lời bên dưới).
TimZaman

Nếu phát hiện ra rằng sau khi chạy này, tôi đã phải làm một git restore --stagedvà nó cố định các vấn đề của tất cả mọi thứ suy nghĩ git cần được recommitted
ViperSniper0501

90

Nếu bạn muốn giữ các thay đổi cục bộ, hãy sử dụng như sau:

$ rm .git/index
$ git reset HEAD .

> Unstaged changes after reset:
  modified foo.txt
  modified bar.txt

1
Bất kỳ ý tưởng tại sao điều này xảy ra? Nó đã xảy ra với tôi khoảng 4-5 lần trong hai tuần qua.
crmpicco,

1
Câu trả lời này là câu trả lời tốt nhất ở đây. Ngoài ra, hãy lưu ý nếu bạn sử dụng mô-đun con git: Xóa cả các tệp chỉ mục đó (chúng nằm trong .git/modules/src). Điều này khiến tôi tự hỏi tại sao lỗi vẫn xảy ra sau khi xóa tệp chỉ mục (chính).
Graftak

Tôi đoán điều này có thể xảy ra vì các lý do tiêu chuẩn, quá trình bị chết giữa chừng, hết dung lượng đĩa, v.v. Mặc dù trong trường hợp của tôi, có thể tôi sử dụng liên kết tượng trưng vào thư mục git để tạo thư mục sử dụng để xây dựng thay cho các phần mềm bên ngoài svn , mặc dù thật lạ là thao tác duy nhất trên các kho lưu trữ đó chỉ được đọc để khôi phục cài đặt gốc các thư mục xây dựng.
jgmjgm

2

Đối với những người có điều hành ngay cả sau khi xóa chỉ mục và không thể thực hiện đặt lại. Nếu bạn muốn giữ các thay đổi của mình, hãy làm như sau (không phải là một giải pháp mà là một cách giải quyết xấu xí!).

  1. Tạo bản sao lưu các tệp của bạn, những gì tôi sắp nói sẽ hoạt động nhưng hãy làm điều đó để đề phòng.
  2. Xóa thư mục .git
  3. Sao chép kho lưu trữ của bạn (không quan trọng ở đâu) Tôi đã làm điều đó trong thư mục hiện tại
  4. Sao chép được tạo từ thư mục .git nhân bản vào thư mục hiện tại của bạn
  5. Xóa thư mục nhân bản 6. Tùy chọn, nếu bạn sử dụng lại chi nhánh kiểm tra nó
  6. Trạng thái Git bây giờ sẽ theo dõi các thay đổi như nó được cho là và tất cả các lệnh git của bạn sẽ hoạt động

Trường hợp của tôi như được mô tả ở trên, git đã làm lộn xộn các tham chiếu của nó ... Git logđang hiển thị "chi nhánh của bạn dường như bị hỏng" và git fsckđang đưa ra cảnh báo cho tôi về các tham chiếu xấu. Đã biết liệu tôi có thể sửa nó hay không nhưng tôi đã mất rất nhiều thời gian để làm việc đó, vì vậy tôi đã đi đến một giải pháp xấu xí.

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.