Подтвердить что ты не робот

Git проблема: fatal: невозможно записать новый индексный файл

У меня есть существующий проект, который управляется в git. Недавно мне пришлось сделать перестройку компьютера (OS X Snow Leopard) и вернуться к проекту, git может отслеживать изменения в проекте, но я ничего не могу сохранить в git. Я получаю ошибку в заголовке при попытке:

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

Какой лучший способ оправиться от этой ситуации? Существует версия репозитория heroku, но она очень не синхронизирована с этим. предположительно, я мог бы использовать новый клон в качестве основы и обновлять каждый файл, но это кажется сложным и подверженным ошибкам.

Что git ищет здесь, что он не может найти, и есть ли какое-то изменение, которое его восстановит?

BTW, права на файлы правильны из того, что я могу сказать - файлы под управлением и компоненты .git принадлежат мне с доступом rw...

4b9b3361

Ответ 1

Я просто столкнулся с той же ситуацией, оказалось, что моя файловая система заполнена.

Ответ 2

У вас есть доступ на запись в .git(= можете ли вы создать там новые файлы и отредактировать существующие)? Если нет, то настройте права доступа к файлам.

Если у вас есть права на запись, кажется, вы обнаружили ошибку. Вы можете попробовать восстановить

  • создать клон из текущей рабочей копии
  • удалить все файлы из рабочей копии клона
  • скопируйте все файлы wc из текущей рабочей копии в клон (и не копируйте .git)
  • попытайтесь что-то зафиксировать в клоне.

Когда работает последний шаг, вам нужно настроить удаленные ветки с текущего репо на клон, а затем использовать клонированное репо в качестве новой рабочей копии.

Ответ 3

Я использовал Parallels под управлением Ubuntu на своем Mac. Я мог бы git init, но не git add. Я считаю, что проблема заключается в том, что git add требует атомной синхронизации с базой данных git. И поскольку файловая система, которую я использовал, была на самом деле на моем Mac, и Parallels экспортировала с моего Mac через сетевой ресурс. Я считаю, что это означает, что git не может делать то, что ему нужно. Перемещение файлов локально устраняло проблему (в моем случае это было легко, так как я использовал DropBox на своем Mac, поэтому я просто установил DropBox на моем Ubuntu, работающем с Parallels)

Ответ 4

У меня возникла проблема с SFTP Network Drive (бесплатно). Решением является: заполните chekcbox "Удалить существующую цель перед перемещением", найденную в настройках профиля Сетевого диска SFTP.

Ответ 5

Я смог исправить это, перейдя в папку .git в приложении git и удалив файл index.lock/index. Мне пришлось переиндексировать все приложение, но оно разрешило проблему.

Ответ 7

Я хотел бы указать еще одну причину этой ошибки

Если вы клонируете репозиторий git, содержащий в нем другой репозиторий git (не подмодуль), вы получите это поведение.

Надеюсь, это поможет кому-то.

Ответ 8

У меня была такая же проблема. Я все еще не знаю причину, но моим обходным решением является delete index.lock sudo rm -f index.lock, а затем я дал разрешение на запись для индекса sudo chmod 777 index. После этого я могу выполнить и совершить. Проблема в том, что я должен делать это почти все время, когда у меня есть что-то, чтобы сработать.

Ответ 9

Это старо, но причиной для меня был Dropbox. Мой локальный репозиторий был сохранен в моей папке Dropbox, и мне пришлось приостановить синхронизацию Dropbox, прежде чем я смогу выполнить команду.

Ответ 10

У меня была аналогичная проблема. "git reset --hard" работал у меня.

Ответ 11

Чтобы добавить: удивительно, что некоторые git плагины блокируют индексный файл. Мой Eclipse Kepler имеет подключаемый модуль по умолчанию, который иногда обновляет некоторую собственную информацию из репозитория git, блокируя индексный файл во время этой операции.

Ответ 12

Я использовал эту проблему при использовании git в visual studio, и моим решением было запустить visual studio в качестве администратора

Ответ 13

У меня была такая же ошибка, потому что клиент Google Backup и Sync для Windows не выпустили блокировку двух файлов в этом репозитории. После завершения синхронизации клиент завершил работу: Process Explorer → Find → Find handle или DLL → Close Handle.