Estoy usando Git-1.9.0-preview20140217
para Windows. Como sé, esta versión debería solucionar el problema con nombres de archivo demasiado largos. Pero no para mí.
Ciertamente yo estoy haciendo algo mal: lo hice git config core.longpaths true
y git add .
ya continuación git commit
. Todo salió bien. Pero cuando ahora hago un git status
, obtengo una lista de archivos con Filename too long
, por ejemplo:
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
Para mí es bastante simple de reproducir: simplemente cree una aplicación web Yeoman con el generador Angular ("yo angular") y elimínela node_modules
del .gitignore
archivo. Luego repita los comandos Git mencionados anteriormente.
¿Que me estoy perdiendo aqui?
Respuestas:
Git tiene un límite de 4096 caracteres para un nombre de archivo, excepto en Windows cuando Git se compila con msys. Utiliza una versión anterior de la API de Windows y hay un límite de 260 caracteres para un nombre de archivo.
Por lo que yo entiendo, es una limitación de msys y no de Git. Puede leer los detalles aquí: https://github.com/msysgit/git/pull/110
Puede evitar esta utilizando otro cliente Git en Windows o conjunto
core.longpaths
atrue
como se ha explicado en otras respuestas.Git se construye como una combinación de scripts y código compilado. Con el cambio anterior, algunos de los scripts pueden fallar. Esa es la razón por la cual core.longpaths no está habilitado de forma predeterminada.
La documentación de Windows en https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file tiene más información:
fuente
core.longpaths
lo que no está habilitado de forma predeterminada. También tenga en cuenta que Git para Windows no se compiló contra MSYS. En cambio, es una aplicación nativa de Windows que viene con un entorno MSYS simplificado.Deberías poder ejecutar el comando
o agréguelo a uno de sus archivos de configuración de Git manualmente para activar esta funcionalidad, una vez que esté en una versión compatible de Git. Parece que tal vez 1.9.0 y posteriores.
fuente
Esto podría ayudar:
Explicación básica: esta respuesta sugiere que no se aplique dicha configuración al sistema global (a todos los proyectos para evitar
--system
o--global
etiquetar) configuraciones. Este comando solo resuelve el problema al ser específico para el proyecto actual.fuente
--system
que se aplicará a todos los proyectosCrea .gitconfig y agrega
Puede crear el archivo en la ubicación de un proyecto (no estoy seguro) y también en la ubicación global. En mi caso la ubicación es
C:\Users\{name}\
.fuente
git config --global core.longpaths true
.gitconfig
archivo en la siguiente rutaC:\Users\{username}
y simplemente editarlo.Pasos a seguir:
Nota : si el paso 2 no funciona o da algún error, también puede intentar ejecutar este comando:
Lea más sobre
git config
aquí .fuente
La mejor solución es habilitar el parámetro longpath de Git.
Pero una solución alternativa que funciona es eliminar la carpeta node_modules de Git:
Agregue node_modules en una nueva fila dentro del archivo .gitignore. Después de hacer esto, empuje sus modificaciones:
fuente
node_modules
: elpackages.lock
archivo está aquí para garantizar que la versión instalada pornpm install
sea siempre la misma, hasta que realice unnpm update
Para estar completamente seguro de que surte efecto inmediatamente después de que se inicialice el repositorio, pero antes de recuperar el historial remoto o retirar cualquier archivo, es más seguro usarlo de esta manera:
Más información
fuente
Ejecutar me
git config --system core.longpaths true
arrojó un error:Solucionado con la ejecución del comando a nivel global:
fuente
También podría intentar habilitar rutas de archivo largas.
Si ejecuta Windows 10 Home Edition, podría cambiar su Registro para habilitar rutas largas.
Ir a
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
enregedit
y ajusteLongPathsEnabled
a1
.Si tiene Windows 10 Pro o Enterprise, también puede usar las Políticas de grupo local.
Vaya a Configuración del equipo → Plantillas administrativas → Sistema → Sistema de archivos en
gpedit.msc
, abierta Habilitar Win32 rutas largas y ponerlo en Habilitado .fuente
El comando anterior funcionó para mí. El uso de '--sistema' me dio un error de archivo de configuración no bloqueado
fuente
Mueva el repositorio a la raíz de su unidad (corrección temporal)
Puede intentar mover temporalmente el repositorio local (la carpeta completa) a la raíz de su unidad o lo más cerca posible de la raíz.
Como la ruta es más pequeña en la raíz de la unidad, a veces soluciona los problemas.
En Windows, movería esto a
C:\
la raíz de otra unidad.fuente
También tuve este error, pero en mi caso la causa fue usar una versión desactualizada de npm, v1.4.28.
Actualización a npm v3 seguido de
trabajó para mi. El número 2697 de npm tiene detalles de la estructura de carpetas "máximamente plana" incluida en npm v3 (publicado el 25/06/2015).
fuente
Si está trabajando con su partición encriptada, considere mover la carpeta a una partición sin encriptar, por ejemplo a / tmp , ejecutándose
git pull
y luego retrocediendo.fuente
En una máquina de windows
Ejecute el símbolo del sistema como administrador y luego ejecute el siguiente comando
fuente