проблема с git: fatal: невозможно записать новый индексный файл - PullRequest
31 голосов
/ 28 сентября 2010

У меня есть существующий проект, который управляется в 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 здесь, чего он не может найти, и есть ли изменения, которые восстановят его?

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

Ответы [ 14 ]

62 голосов
/ 08 августа 2012

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

4 голосов
/ 29 сентября 2010

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

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

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

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

3 голосов
/ 06 июля 2012

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

2 голосов
/ 26 марта 2015

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

2 голосов
/ 09 октября 2013

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

1 голос
/ 30 августа 2016

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

1 голос
/ 02 декабря 2015

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

1 голос
/ 17 февраля 2014

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

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

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

1 голос
/ 15 сентября 2013

Если вы используете sshfs, добавьте параметр -o workaround=rename, как описано здесь: http://alan.lamielle.net/2009/07/08/git-over-sshfs

0 голосов
/ 27 марта 2019

У меня была такая же проблема."fatal: Невозможно записать новый индексный файл"

Я обнаружил, что причина в том, что мой диск переполнен.Я удалил что-то еще из этого, а затем мой репозиторий Git восстановился и все снова заработало.

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