Ответ 1
В моем случае на диске закончилось свободное место, поэтому мне пришлось удалить файлы с жесткого диска, чтобы освободить место.
Я видел многие другие темы об этом, и они не помогают.
У меня очень простое репо - два файла JavaScript. У меня есть 100 + GB на Macbook. Когда я пытаюсь переместить файлы в подкаталог и ставить локально изменения, которые я получаю...
fatal: невозможно записать новый индексный файл
Это происходит независимо от того, выполняю ли я все действия в терминале или использую графический интерфейс, например, SourceTree. Кроме того, один из файлов становится заблокированным, и я не могу удалить рабочий каталог, пока я не выйду из системы и не вернусь.
Почему это происходит? Является ли блокировка чем-то препятствующим? Если да, то что/как разблокировать файл проблемы на OS X?? Удаленное репо - это Google Code, если это имеет значение, хотя я пока не нажимаю на удаленный компьютер. Все локально.
В моем случае на диске закончилось свободное место, поэтому мне пришлось удалить файлы с жесткого диска, чтобы освободить место.
У меня была эта же проблема за последние несколько дней. В принципе, без моего ведома, все репо было перемещено в новую файловую систему, когда я пытался запустить статус git, внезапно сообщалось, что каждый файл в репо был обнулен.
Итак, после многократной очистки Google я пробовал следующее:
Единственное, что удалось решить проблему, это скопировать индексный файл, удалить оригинал и переименовать копию.
Я знаю, что это не "решение", а теперь его магически работающий > <, со всеми файлами/ветвями. Если кто-нибудь знает, почему это может иметь работу, расскажите.
У меня была такая же проблема на Mac. Кажется, это вызвано ACL файловой системы. Попробуйте chmod -RN /path/to/repo
очистить списки управления доступом. Сделав это, я смог внести изменения. Используя трюк для копирования индексного файла, удалите оригинал и переместите копию назад, получив тот же результат.
Если у вас настроен github в какой-либо онлайн-службе синхронизации, например, на google drive или dropbox, попробуйте отключить синхронизацию, поскольку служба синхронизации пытается прочитать/записать файл, как github пытается сделать то же самое, что приводит к неработоспособности github. правильно.
В моем случае приостановка синхронизации Dropbox решила проблему
Случилось со мной, что файл .git/index использовался другим процессом (мой локальный веб-сервер разработки). Я закрыл процесс, а затем он работал.
Это сработало для меня:
rm -f ./.git/index.lock
В моем случае решением было только добавление разрешения новому пользователю.
Когда я установил новую ОС, переместил свои репозитории, и это показывало именно эту ошибку, я выбрал корневую папку, а затем добавил аутентифицированного пользователя, чтобы проверить все
У меня был ACL (каким-то образом), прикрепленный ко всем файлам в папке .git.
Проверьте его с помощью ls -le
в папке .git.
Вы можете удалить ACL с помощью chmod -N
(для папки/файла) или chmod -RN
(рекурсивный)
Я думаю, что некоторые фоновые решения для резервного копирования, такие как Google Backup и Sync, блокируют доступ к файлу индекса. Я закрыл приложение, и у Sourcetree не было никаких проблем. Кажется, что Dropbox делает то же самое (@tonymayoral).
В моем случае это был одновременный запуск EGit. После перезапуска eclipse он работает как обычно.
Если вы находитесь в окне Windows, убедитесь, что используемая вами программа, будь то исходное дерево или терминал git, работает как администратор. Я получал то же точное сообщение об ошибке. Вы можете щелкнуть правой кнопкой мыши по программе, чтобы ее можно было запустить как администратор или изменить ее свойства, чтобы она всегда запускалась как администратор.
Закрытие кода Visual Studio (в моем случае есть фоновая работа автозагрузки, выполняемая при сохранении файла), решила проблему для меня.
Кредит на решение: мой друг и коллега Арнел.
Вы попробовали 'git add.', будут ли все изменения? (вы можете удалить ненужные добавленные файлы с помощью git reset HEAD)
Недостаток места - это проблема. Очистите и попробуйте снова
Эта проблема может быть вызвана тем, что .git\index
заблокирован процессом.
Ссылка Узнайте, какой процесс блокирует файл или папку в Windows определяет следующий подход для поиска заблокированного файла:
SysInternals Process Explorer - выберите "Найти" > "Найти дескриптор" или "DLL". В текстовом поле "Ручка или DLL подстрока:" введите путь к файлу (например, "C:\path\to\file.txt" ) и нажмите "Поиск". Все процессы, у которых есть открытый дескриптор этого файла, должны быть перечислены.
Используйте описанный выше подход, чтобы определить, какой процесс заблокирован .git\index
, а затем остановить исполняемый файл блокировки. Это должно решить проблему.
Например, Process Explorer Search показывает, что мой .git\index
был заблокирован vmware-vmx.exe
. Приостановка виртуальной машины проигрывателя VMWare (доступ к репо через 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, я получил эту ошибку. У меня было два пользователя ABC и XYZ. У файлов есть uid: gid из ABC, но у него нет доступа к git, и они пытаются извлечь файлы с тем же именем.
Решение, которое я попробовал: XYZ имеет доступ к git, попытался проверить файлы с помощью sudo, и это сработало.. !!
Вот что сработало для меня:
Контекст:
Сборка проекта на сервере
git status
возвращает HEAD detached at <commit-SHA>
Какую бы операцию я ни делал локально, у меня была эта ошибка. Более конкретно:
Решение
<work-dir>/.git/index
.git status
будет означать, что все файлы в проекте не отслеживаются (здесь нет ничего удивительного).git reset HEAD --hard
HEAD detached at <commit-SHA>
при выполнении состояния git status
, но тогда вы сможетеgit checkout <some-branch>
и ты вернулся на трассу!
!! ВАЖНЫЙ !!
Это работает только потому, что я "веселый" строй. Никаких драгоценных изменений не было выполнено в коде. Если вы на самом деле находитесь в "время разработки", то я бы рекомендовал сначала сохранить вашу работу или перейти на другой метод.
Надеюсь, это поможет :).
У меня была эта проблема с использованием GitExtensions на Windows. Исправлено путем предоставления полного разрешения для текущего пользователя (меня) на папку, содержащую репо.
В другой раз, несмотря на то, что я получал ошибку от Git Extensions, я смог зафиксировать те же файлы из Visual Studio 2015.
В другой раз мне пришлось удалить файл "index" из папки .git
Мой случай немного интересен:
Я запускаю git log для проверки определенного коммита, затем я не вышел из него должным образом, я нажимаю Ctrl + C, чтобы выйти из него.
Тогда индекс, кажется, был заблокирован. Поэтому я снова запускаю git log, затем нажимаю Q, чтобы выйти из него.
Проблема исправлена. :)