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