Слишком длинное имя файла в git для windows

Я использую Git-1.9.0-preview20140217 для Windows. Как я знаю, этот выпуск должен исправить проблему с слишком длинными именами файлов. Но не для меня.

конечно, я делаю что-то не так: я git config core.longpaths true и git add . затем git commit. Все прошло хорошо. Но когда я сейчас делаю git status, я получаю список файлов с Filename too long, например,

node_modules/grunt-contrib-imagemin/node_modules/pngquant-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js: Filename too long

это довольно просто воспроизвести для меня: просто создайте веб-приложение yeoman с угловым генератором ("Yo angular") и удалите node_modules С .gitignore файл. Затем повторите вышеупомянутые команды git.

что я пропустила?

11 ответов


git имеет ограничение в 4096 символов для имени файла, за исключением windows, когда git скомпилирован с msys. Он использует более старую версию api windows, и есть ограничение в 260 символов для имени файла.

насколько я понимаю, это ограничение msys, а не git. Вы можете прочитать подробности здесь : https://github.com/msysgit/git/pull/110

вы можете обойти это, используя другой Git-клиент в windows или set core.longpaths to true как объяснено в других ответах ниже.

git config --system core.longpaths true

вы должны иметь возможность выполнить команду

git config --system core.longpaths true

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


Это может помочь :

git config core.longpaths true

основное объяснение: этот ответ предлагает не применять такую настройку к глобальной системе (ко всем проектам, избегающим конфигураций --system или --global tag). Эта команда решает проблему, только будучи специфичной для текущего проекта.


создать .gitconfig хранит настройки и добавить

[core]
longpaths = true

вы можете создать файл в местоположении проекта (не уверен), а также в глобальном местоположении в моем случае местоположение c:Users{name}\


лучшее решение-включить параметр longpath из git.

git config --system core.longpaths true

но работа, которая работает, - удалить node_modules folter из git.

$ git rm -r --cached node_modules
$ vi .gitignore

добавить node_modules в новой строке внутри .файла.gitignore После этого нажмите свои модификации.

$ git add .gitignore
$ git commit -m "node_modules removed"
$ git push

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

git clone -c core.longpaths=true <repo-url>

-C ключ=значение

задайте переменную конфигурации во вновь созданном репозитории; это вступает в силу сразу после инициализации репозитория, но перед извлечением удаленной истории или извлечением файлов. Ключ в том же формат, как и ожидалось git-config1 (напр., ядро.Эол=правда). Если для одного и того же ключа задано несколько значений, то каждое значение будет записано в файл config. Это делает его безопасным для например, чтобы добавить дополнительную выборку refspecs к исходному удаленному.

Подробнее


Действия:

  1. старт Git Bash as администратор
  2. выполнить команду git config --system core.longpaths true

подробнее о git config здесь


переместить РЕПО в корень вашего диска (временное исправление)

вы можете попытаться временно переместить локальное РЕПО (всю папку) в корень вашего диска или как можно ближе к корню.

поскольку путь меньше в корне диска, он иногда устраняет проблемы.

на windows, я бы переместил это в C:\ или корень другого диска


вы также можете попробовать включить длинные пути к файлам

если вы запустите Windows 10 Home Edition, вы можете изменить реестр, чтобы включить длинные пути.

на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem на regedit и затем установить LongPathsEnabled to 1.

если у вас есть Windows 10 Pro или Enterprise, вы также можете использовать локальные групповые политики.

на Computer Configuration > Administrative Templates > System > Filesystem на gpedit.msc, открытого Enable Win32 long paths и установить его в Enabled.


У меня тоже была эта ошибка, но в моем случае причиной было использование устаревшей версии npm, v1.4.28.

обновление до npm v3 с последующим

rm -rf node_modules
npm -i

работал для меня. выпуск npm 2697 содержит сведения о" максимально плоской " структуре папок, включенной в npm v3 (выпущен 2015-06-25).


Если вы работаете с зашифрованным разделом, перенесите папку на незашифрованный раздел, например / tmp, работает git pull, а затем движется обратно.