Git Add - фатально: добавление файлов не удалось - PullRequest
1 голос
/ 19 июня 2019

Мое окно git-cmd.exe выглядит следующим образом:

git add "NextFolder/*"
error: unable to create temporary file: No such file or directory
error: NextFolder/SomeFile.txt: failed to insert into database
error: unable to index file 'NextFolder/SomeFile.txt'
fatal: adding files failed

Я добавляю большое количество файлов в новый репозиторий git.У меня более 14 000 файлов, распределенных по 80 папкам на корневом уровне.Из-за громкости я решил добавить и зафиксировать одну папку за раз.Кажется, что в каждой папке есть определенное количество файлов, которые приводят к фатальной ошибке в операции «git add» (см. Выше).

Я использую Git для Windows, портативная версия:

git --version
git version 2.22.0.windows.1

Я считаю, что ошибка как-то связана с содержимым файла.Я могу переименовать файл, скопировать содержимое в новый файл, переименовать этот файл, ничего из этого не заставит его работать.Я обнаружил, что если я добавляю CRLF в самом низу файла, проблема «исправлена» для этого файла, но операция git add просто зависает на каком-то другом файле в папке с таким же условием.

Я использовал Notepad ++ для проверки файлов по сравнению с другими файлами, которые, кажется, добавляются без проблем.Окончания строк выглядят одинаково (CRLF), кодировка выглядит одинаково (ANSI) и т. Д.

Один из комментариев в этой теме, кажется, описывает мою точную проблему, но это последний комментарий ответа безupvotes и потоку 5 лет ...

git - невозможно создать временный файл: нет такого файла или каталога - только для определенных файлов?

I'mтакже вполне уверен, что это не проблема с разрешениями.Это первое, что приходит мне в голову, но я полностью скопировал исходный код на свою локальную машину, чтобы добавить все в git.Так что я думаю, что это не должно быть проблемой с разрешениями, поскольку все локально и большинство файлов добавляются.Если это не связано с объемом файлов или с тем фактом, что я использую Git Portable.

Я часами бился об это, отправляю помощь!

РЕДАКТИРОВАТЬ: я должен был указать, чтоGit-репо отделен от рабочего дерева.Рабочее дерево находится на сетевом диске S: \ paht \ to \ tree \, а репозиторий - на другом сетевом диске H: \ git \ test.git.Считается, что это временно, я пытаюсь охарактеризовать частоту изменений, которые мы имеем в (рабочем дереве) сетевого расположения.Как только у меня появится лучшее понимание того, где у нас больше всего оттока, я думаю, что мы сделаем небольшие репо с типичной конфигурацией, имея папку .git в корне рабочего дерева.

1 Ответ

1 голос
/ 01 июля 2019
git add "NextFolder/*"

Это должно быть git add "NextFolder": здесь не требуется звезда / подстановочный знак, так как это будет интерпретировано Git bash вместо самого Git.

Сначала убедитесь, чточтобы добавить эти файлы в сеанс CMD, используя упрощенную PATH: это исключит любое другое влияние программы.

set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
set GH=C:\path\to\git
set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%PATH%

Во-вторых, сначала введите:

git config core.autocrlf false

Этоизбегайте, чтобы Git пытался конвертировать EOL для всех файлов.

Я упоминал core.fscache здесь , но в Git 2.22 проблема 1989 resolved.

Do активировать core.commitGraph и добавлять папку (и подпапки) за раз с фиксацией, выполняемой после каждого добавления.

Наконец, с помощью Git2.22, активируйте , активируйте trace2 , чтобы получить больше трасс.


Я должен указать, что при наличии ошибки репо отделилось от рабочего дерева.
Онина разных объемах.

  • Рабочее дерево находится под S:\path\..., а
  • папка .git находится под H:\git\test.git

Попробуйте и проверьте,проблема сохраняется при выполнении git add в локальном репозитории, клонированном на вашем локальном диске C:\ (сеть не должна быть задействована, по крайней мере, для папки .git).

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