Слишком длинное имя файла в 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.



что мне здесь не хватает?

711   11  

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 (например, ядро.eol=true). Если для одного и того же ключа задано несколько значений, то каждое значение будет записано в файл config. Это делает его безопасным для например, чтобы добавить дополнительные refspecs выборки к удаленному источнику.

Подробнее

Действия:

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

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

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

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

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

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

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

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

на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem на regedit и затем установить LongPathsEnabled до 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, а затем движется обратно.

Comments

    Ничего не найдено.