Слишком длинное имя файла в 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 к исходному удаленному.
Действия:
- старт Git Bash as администратор
- выполнить команду
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
, а затем движется обратно.