я использую 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.
Что мне здесь не хватает?
Ответы:
Git имеет ограничение в 4096 символов для имени файла, за исключением Windows, когда Git компилируется с помощью msys. Он использует более старую версию Windows API, и для имени файла существует ограничение в 260 символов.
Так что, насколько я понимаю, это ограничение msys, а не Git. Вы можете прочитать подробности здесь: https://github.com/msysgit/git/pull/110
Вы можете обойти это с помощью другого клиента Git на Windows , или набор ,
core.longpaths
чтобы ,true
как описано в других ответах.Git собран как комбинация скриптов и скомпилированного кода. С указанным выше изменением некоторые скрипты могут потерпеть неудачу. По этой причине core.longpath не включается по умолчанию.
Документация Windows по адресу https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file содержит дополнительную информацию:
источник
core.longpaths
по умолчанию он не включен. Также обратите внимание, что Git для Windows не скомпилирован с MSYS. Вместо этого это родное приложение Windows, которое поставляется с урезанной средой MSYS.Вы должны быть в состоянии выполнить команду
или добавьте его в один из ваших файлов конфигурации Git вручную, чтобы включить эту функцию, если вы используете поддерживаемую версию Git. Похоже, может быть 1.9.0 и после.
источник
Это может помочь:
Основное объяснение: в этом ответе предлагается не применять такой параметр к глобальным системным (для всех проектов, избегая
--system
или--global
помечать) конфигурациям. Эта команда только решает проблему, будучи специфичной для текущего проекта.источник
--system
которое применимо ко всем проектамСоздайте .gitconfig и добавьте
Вы можете создать файл в местоположении проекта (не уверен), а также в глобальном местоположении. В моем случае это место
C:\Users\{name}\
.источник
git config --global core.longpaths true
.gitconfig
файл по следующему путиC:\Users\{username}
и просто отредактировать его.Шаги, чтобы следовать:
Примечание : если шаг 2 не работает или выдает какую-либо ошибку, вы также можете попробовать выполнить эту команду:
Подробнее о
git config
здесь .источник
Лучшее решение - включить параметр longpath из Git.
Но обходной путь, который работает, - это удалить папку node_modules из Git:
Добавьте node_modules в новую строку внутри файла .gitignore. После этого нажмите ваши модификации:
источник
node_modules
:packages.lock
файл находится здесь, чтобы гарантировать, что установленная версияnpm install
всегда будет одинаковой, пока вы не сделаетеnpm update
Чтобы быть полностью уверенным, что он вступает в силу сразу после инициализации репозитория, но до того, как удаленная история будет извлечена или какие-либо файлы извлечены, безопаснее использовать ее следующим образом:
Больше информации
источник
Выполнение
git config --system core.longpaths true
выкинуло мне ошибку:Исправлено с выполнением команды на глобальном уровне:
источник
Вы также можете попытаться включить длинные пути к файлам.
Если вы используете Windows 10 Home Edition, вы можете изменить реестр, чтобы включить длинные пути.
Войдите
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
вregedit
и затем установитеLongPathsEnabled
в1
.Если у вас Windows 10 Pro или Enterprise, вы также можете использовать локальные групповые политики.
Перейдите в Конфигурация компьютера → Административные шаблоны → Система → Файловая система в
gpedit.msc
, откройте Включить длинные пути Win32 и установите для него значение Включено .источник
Вышеуказанная команда работала для меня. Использование '--system' дало мне ошибку в файле конфигурации без блокировки
источник
Переместить репозиторий в корень вашего диска (временное исправление)
Вы можете попытаться временно переместить локальный репозиторий (всю папку) в корень диска или как можно ближе к корню.
Поскольку путь в корне диска меньше, это иногда устраняет проблемы.
В Windows я переместил бы это
C:\
или корень другого диска.источник
У меня тоже была эта ошибка, но в моем случае причиной была устаревшая версия npm v1.4.28.
Обновление до npm v3 с последующим
работал на меня. В выпуске npm 2697 содержатся подробные сведения о «максимально плоской» структуре папок, включенной в npm v3 (выпущена 2015-06-25).
источник
Если вы работаете с зашифрованным разделом, попробуйте переместить папку в незашифрованный раздел, например, / tmp , запустить
git pull
, а затем вернуться назад.источник
В машине окна
Запустите командную строку как администратор, затем выполните команду ниже
источник