2010-09-28 27 views
30

Tôi có một dự án hiện có đã được quản lý theo git. Gần đây tôi đã phải xây dựng lại máy tính (OS X Snow Leopard) và quay trở lại dự án, git có thể theo dõi những thay đổi trong dự án, nhưng tôi không thể tiết kiệm được gì cho git. Tôi gặp lỗi trong tiêu đề khi tôi thử:vấn đề git: gây tử vong: Không thể ghi tệp chỉ mục mới

Dans-iMac-335:[app-name-obscured] apple$ git add app/models/* 
fatal: Unable to write new index file 

Cách tốt nhất để khôi phục từ tình huống này là gì? Có một phiên bản kho lưu trữ heroku của điều này, nhưng nó là rất ra khỏi đồng bộ với điều này. có lẽ tôi có thể sử dụng một bản sao mới làm cơ sở, và cập nhật từng tập tin, nhưng điều đó có vẻ quá mất thời gian và dễ bị lỗi.

Git tìm kiếm gì ở đây mà nó không thể tìm thấy và có thay đổi sẽ khôi phục không?

BTW, cho phép tập tin là chính xác so với những gì tôi có thể nói - các tập tin dưới sự kiểm soát và các thành phần .git đều thuộc sở hữu của tôi với truy cập rw ...

Trả lời

4

Bạn có quyền ghi vào .git (= bạn có thể tạo các tệp mới ở đó và chỉnh sửa các tệp hiện có) không? Nếu không thì hãy điều chỉnh quyền của tệp.

Nếu bạn có quyền ghi, có vẻ như bạn đã tìm thấy lỗi. Bạn có thể cố gắng để phục hồi bởi

  1. tạo một bản sao từ bản sao làm việc hiện tại của bạn
  2. loại bỏ tất cả các tập tin từ bản sao làm việc của clone
  3. sao chép tất cả các file wc từ bản sao làm việc hiện tại của bạn để clone (và không sao chép .git)
  4. cố gắng thực hiện điều gì đó trong bản sao.

Khi bước cuối cùng hoạt động, bạn cần thiết lập các nhánh xa từ repo hiện tại của bạn thành bản sao và sau đó bạn có thể sử dụng bản sao được sao chép làm bản sao làm việc mới của mình.

+1

Rudi gần như chắc chắn đúng. Ngay cả khi * tên * của tài khoản trên máy cũ của bạn và máy mới của bạn là như nhau, đó không phải là những gì OS X quan tâm dưới vỏ, đó là UID đếm. Giống như Rudi gợi ý, hãy xem bạn có thể thay đổi một tệp như .git/config mà không cần sudo hay không. Nếu bạn không thể (mà tôi nghi ngờ là trường hợp), thì giải pháp có lẽ chỉ là để sudo chown tất cả mọi thứ cho người dùng mới của bạn. –

+0

Gần đây tôi đã có một cuốn sách Mac mới và đã có kho git của tôi trên mạng gia đình của tôi thông qua một NAS. Tôi nhận được khá nhiều lỗi tương tự. gây tử vong: Kho lưu trữ đã được cập nhật nhưng không thể ghi tệp new_index. Kiểm tra đĩa chưa đầy hoặc hạn ngạch là không vượt quá, sau đó "git reset HEAD" để khôi phục. MacBook-Pro: Tài khoản thời gian lãng phí $ git reset HEAD lỗi: Không thể ghi tệp chỉ mục mới. gây tử vong: Không thể đặt lại tệp chỉ mục thành bản sửa đổi 'HEAD'. MacBook-Pro: Tài khoản bị lãng phí $ Bạn có thể xác nhận đây là lỗi tương tự không? Và nếu có, tôi có cần tạo một kho lưu trữ hoàn toàn mới không? –

3

Tôi đã sử dụng Parallels chạy Ubuntu trên máy Mac của mình. Tôi có thể git init, nhưng không git thêm. Tôi tin rằng vấn đề là git add yêu cầu đồng bộ nguyên tử với cơ sở dữ liệu git cơ bản. Và kể từ khi hệ thống tập tin tôi đang sử dụng đã thực sự trên máy Mac của tôi và Parallels được xuất khẩu từ máy Mac của tôi thông qua một mạng chia sẻ. Tôi tin rằng điều này có nghĩa là git không thể làm những gì nó muốn. Di chuyển các tập tin cục bộ cố định vấn đề (Trong trường hợp của tôi điều này đã được dễ dàng kể từ khi tôi đã sử dụng DropBox trên máy Mac của tôi, vì vậy tôi chỉ cần cài đặt DropBox trên Ubuntu của tôi chạy Parallels)

+1

Tôi đang gặp vấn đề tương tự trong VirtualBox và hệ thống tệp của tôi chưa đầy. Đó là một chút bực bội rằng Dropbox là câu trả lời, nhưng tôi không thể nhìn thấy một giải pháp tốt hơn. – Ivar

60

Tôi chỉ chạy vào tình huống tương tự, hóa ra là hệ thống tập tin của tôi đã đầy.

+1

Tôi thứ hai phản hồi này. Đây là hướng dẫn về [cách tìm những thư mục lớn] (http://blindhog.net/linux-find-large-directories). Ngoài ra, đây là [man page] (http://manpagez.com/man/1/du) cho 'du'. [chỉnh sửa để đánh dấu] – bitcycle

+1

WinDirStat là yêu thích cá nhân của tôi đối với việc sử dụng hệ thống tệp. https://WinDirStat.info/ –

0

Tôi gặp sự cố tương tự. "git reset --hard" đã làm việc cho tôi.

+14

bạn cũng nên đề cập đến các tác dụng phụ của git reset. bạn sẽ mất tất cả các thay đổi không được cam kết/cục bộ. – Avijeet

2

Tôi đã có một vấn đề simular với SFTP Network Drive (miễn phí). Giải pháp là: điền vào chekcbox "Xóa mục tiêu hiện tại trước khi di chuyển" được tìm thấy trong Cài đặt Cấu hình của Ổ đĩa Mạng SFTP.

1

Tôi muốn chỉ ra thêm một nguyên nhân gây ra lỗi này

Nếu bạn đang nhân bản một kho git chứa kho khác git trong nó (không submodule), bạn sẽ nhận được hành vi này.

Hy vọng nó sẽ giúp ai đó.

0

Để thêm: đáng ngạc nhiên, một số plugin git chặn tệp chỉ mục. Eclipse Kepler của tôi có trình cắm thêm mặc định, thỉnh thoảng cập nhật một số thông tin riêng từ repo git, chặn tệp chỉ mục trong quá trình hoạt động đó.

2

Tôi đã có thể khắc phục điều này bằng cách truy cập thư mục .git trong ứng dụng git started và xóa tệp index.lock/index. Tôi đã phải reindex toàn bộ ứng dụng, nhưng nó giải quyết vấn đề.

1

Tôi gặp vấn đề tương tự. Tôi vẫn không biết nguyên nhân, nhưng cách giải quyết của tôi là xóa index.lock sudo rm -f index.lock và sau đó tôi đã cấp quyền ghi chỉ mục sudo chmod 777 index. Sau đó tôi có thể lên sân khấu và cam kết. Vấn đề là tôi phải làm điều này hầu như tất cả các lần tôi có một cái gì đó để sân khấu.

1

Đây là cũ, nhưng nguyên nhân của tôi là Dropbox. Kho lưu trữ cục bộ của tôi được lưu trữ trong thư mục Dropbox của tôi và tôi phải tạm dừng đồng bộ Dropbox trước khi tôi có thể hoàn thành lệnh.

0

tôi đã sử dụng vấn đề này khi sử dụng git trên visual studio, và giải pháp của tôi là để chạy visual studio như một quản trị viên

0

tôi đã có lỗi tương tự vì sao lưu Google Drive và Sync client cho Windows đã không phát hành một khóa trên hai tệp trong kho lưu trữ này. Một công việc xung quanh là, sau khi khách hàng đồng bộ đã hoàn thành công việc của mình: Process Explorer -> Find -> Find handle hoặc DLL -> Close Handle.

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