Git 'fatal: не удается написать новый индексный файл'



Я видел много других тем об этом, и они не помогают.



У меня есть очень простое РЕПО - два файла JavaScript. У меня есть 100+ ГБ на Macbook. Когда я пытаюсь переместить файлы в подкаталог и этап локально изменения, которые я получаю ...




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




Это происходит ли я делаю все действия в терминале или если я использую графический интерфейс, как SourceTree. Кроме того, один из файлов становится заблокированным, и я не могу удалите рабочий каталог, пока я не выйду из системы и не вернусь.



Почему это происходит? Является ли блокировка предотвращает что-то от постановки? Если да, то что/как разблокировать файл проблемы на OS X?? Удаленное РЕПО-это код Google, если это имеет значение, хотя я еще не нажимаю на пульт. Здесь все местное.

871   20  

20 ответов:

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

У меня была такая же проблема в течение последних нескольких дней. В принципе, без моего ведома все РЕПО было перемещено в новую файловую систему, когда я попытался запустить git status, он внезапно сообщил, что каждый файл в репо был udpated.

возможные решения

Итак, после долгих поисков google я попробовал следующее:

  • меняется .git permssions (тот же вопрос)
  • меняется .разрешения git/index (то же самое выпуск)
  • git добавление всех изменений для фиксации (та же проблема)
  • git rm-ING удаленные файлы, так как они сообщали имя файла слишком долго ошибки (та же проблема)
  • git reset (soft / Head / Hard) (та же проблема)
  • git clean (та же проблема)
  • отключение Защитника windows (та же проблема)
  • обновление git (та же проблема)
  • разные клиенты git (я использую gitbash) (та же проблема)
  • пить 2 кофе вместо 1 (то же самое выпуск)

tl: dr-грязное решение

единственное, что удалось решить проблему, это скопировать индексный файл, удалить оригинал и переименовать копию.

Я знаю, что это не совсем "решение", но теперь его волшебная работа>

У меня была такая же проблема на Mac. Это, кажется, вызвано ACL файловой системы. Попробуй chmod -RN /path/to/repo очистить списки. После этого я смог зафиксировать изменения. Используя трюк для копирования индексного файла, удалите оригинал и переместите копию обратно, добившись того же результата.

в моем случае приостановка синхронизации dropbox решила проблему

Это случилось со мной, что файл .git / index использовался другим процессом (мой локальный веб-сервер разработки). Я закрыл процесс, и тогда это сработало.

это сработало для меня:

rm -f ./.git/index.lock

У меня был ACL (каким-то образом), прикрепленный ко всем файлам .папка git.

проверьте это с ls -le в рамках .папка git.

вы можете удалить ACL с помощью chmod -N (для папки / файла) или chmod -RN (рекурсивный)

Если у вас есть настройка github в какой-то онлайн-службе синхронизации, такой как google drive или dropbox, попробуйте отключить синхронизацию, поскольку у меня была такая же проблема, и это сработало для меня.

в моем случае это был параллельный запуск EGit. После перезапуска Eclipse он работает как обычно.

вы пробовали ' git добавить .'. это все изменения? (вы можете удалить ненужные добавленные файлы с помощью git reset HEAD)

Если вы находитесь в окне Windows, убедитесь, что программа, которую вы используете, будь то исходное дерево или терминал git, работает от имени администратора. Я получаю то же сообщение об ошибке. Вы можете либо щелкнуть правой кнопкой мыши на программе для запуска от имени администратора, либо изменить ее свойства, чтобы всегда работать от имени администратора.

Не имея достаточно пространства. Очистка и повторите попытку

ЕСЛИ ВЫ ПОЛУЧИТЕ ЭТО ВО ВРЕМЯ ПЕРЕБАЗИРОВАНИЯ:

это, скорее всего, вызвано некоторым программным обеспечением, блокирующим индексный файл вашего РЕПО, таким как программное обеспечение для резервного копирования, антивирусы, IDE или другие клиенты git.

в большинстве случаев замок только на короткий момент, и поэтому это просто происходит из плохого времени и невезения.

, git rebase --continue будет жаловаться на то, что следующая команда является пустой фиксацией:
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

    git commit --allow-empty

чтобы исправить это, просто запустите git reset и попробуй git rebase --continue снова.

эта проблема может быть вызвана .git\index заблокировано процессом.

ссылке выяснить, какой процесс блокирует файл или папку в Windows определяет следующий подход для поиска заблокированного файла:

Sysinternals Process Explorer-перейдите в меню найти > найти дескриптор или DLL. В текстовом поле" дескриптор или подстрока DLL: "введите путь к файлу (например, "C:\path\to\file.txt") и нажмите кнопку"Поиск". Все процессы, которые имеют открытый дескриптор файла должны быть перечислены.

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

например, Process Explorer Search показывает, что мой .git\index был зафиксирован vmware-vmx.exe. Приостановка виртуальной машины VMWare Player (которая получила доступ к репозиторию git через общую папку) решила проблему.

закрытие кода Visual Studio (который в моем случае имеет фоновое задание автоматической загрузки, работающее на file-save) решило проблему для меня.

кредит для решения: мой друг и коллега Арнел.

вопрос: Когда я проверял некоторые измененные файлы в Git, получил эту ошибку. У меня было два пользователя ABC и XYZ. файлы имеют uid: gid ABC, но у него нет доступа git и он пытается проверить файлы с тем же.

решение, которое я пробовал: XYZ имеет доступ к git, попытался проверить файлы с помощью sudo, и это сработало..!!

вот что сработало для меня:

контекст:

  1. построение проекта на сервере

  2. git status возвращает a HEAD detached at <commit-SHA>

  3. какую бы операцию я ни делал локально, у меня была эта ошибка. Более конкретно:

    • git checkout
    • git сброс головы -- тяжело

решение

  1. просто удалить файл <work-dir>/.git/index.
  2. A git status означает, что все файлы в проекте не отслеживаются (тут без сюрпризов).
  3. git reset HEAD --hard
  4. на HEAD detached at <commit-SHA> при выполнении git status, но тогда вы должны быть в состоянии
  5. git checkout <some-branch>

и вы снова на верном пути!

!! ВАЖНЫЙ !!

это работает только потому, что я "строки" строительство. В коде не было выполнено никаких ценных изменений. Если вы действительно находитесь в" dev-time", то я бы рекомендовал сначала сохранить вашу работу или перейти на другой метод.

надеюсь, что это поможет :).

У меня была эта проблема с использованием GitExtensions на windows. Исправлено путем предоставления полного разрешения для текущего пользователя (меня) на папку, которая содержала РЕПО.

в другой раз, я, хотя я получал ошибку от расширений Git, я смог зафиксировать те же файлы из Visual Studio 2015.

в другой раз мне пришлось удалить файл "индекс" от .git folder

мой случай немного интересно:

Я запускаю git log, чтобы проверить определенную фиксацию, затем я не вышел из нее должным образом, я нажимаю ctrl+c, чтобы выйти из нее.

тогда индекс, кажется, был заблокирован. Поэтому я снова запускаю журнал git, а затем нажимаю Q, чтобы выйти из него.

проблема исправлена. :)

Я думаю, что некоторые решения для резервного копирования фона, такие как Google Backup и Sync, блокируют доступ к индексному файлу. Я закрыл приложение, и конечно не было никаких проблем. Кажется, что Dropbox делает то же самое (@tonymayoral).

Comments

    Ничего не найдено.