windows - son - git tag remove
Nombre de archivo demasiado largo en Git para Windows (11)
Mueva el repositorio a la raíz de su disco (arreglo 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:/
u otra raíz de la unidad.
Estoy usando Git-1.9.0-preview20140217
para Windows. Como sé, esta versión debería solucionar el problema con nombres de archivos demasiado largos. Pero no para mí.
Seguramente estoy haciendo algo mal: hice git config core.longpaths true
y git add .
y luego 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 muy sencillo de reproducir: simplemente cree una aplicación web Yeoman con el generador Angular ("yo angular") y elimine node_modules
del archivo .gitignore
. Luego repite los comandos Git antes mencionados.
¿Que me estoy perdiendo aqui?
Pasos a seguir:
- Iniciar Git Bash como administrador
- Ejecute el comando
git config --system core.longpaths true
Lea más sobre git config
here .
Crea .gitconfig y agrega
[core]
longpaths = true
Puede crear el archivo en una ubicación del proyecto (no está seguro) y también en la ubicación global. En mi caso, la ubicación es C:/Users/{name}/
.
Debes poder ejecutar el comando
git config --system core.longpaths true
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 después.
Esto podría ayudar:
git config core.longpaths true
Explicación básica: esta respuesta sugiere que no se aplique dicha configuración al sistema global (a todos los proyectos, evitando así las --system
o etiqueta --global
). Este comando solo resuelve el problema siendo específico para el proyecto actual.
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 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 esto usando otro cliente Git en Windows o establecer core.longpaths
en true
como se explica en otras respuestas.
git config --system core.longpaths true
La mejor solución es habilitar el parámetro longpath de Git.
git config --system core.longpaths true
Pero una solución que funciona es eliminar la carpeta node_modules de Git:
$ git rm -r --cached node_modules
$ vi .gitignore
Agregue node_modules en una nueva fila dentro del archivo .gitignore. Después de hacer esto, empuje sus modificaciones:
$ git add .gitignore
$ git commit -m "node_modules removed"
$ git push
Para estar completamente seguro de que surta efecto inmediatamente después de que se inicializa el repositorio, pero antes de que se recupere el historial remoto o se extraiga cualquier archivo, es más seguro usarlo de esta manera
git clone -c core.longpaths=true <repo-url>
-c clave = valor
Establecer una variable de configuración en el repositorio de nueva creación; esto tiene efecto inmediatamente después de que se inicializa el repositorio, pero antes de que se recupere el historial remoto o de que se extraiga cualquier archivo. La clave está en el mismo formato que espera git-config 1 (por ejemplo, core.eol = true). Si se dan varios valores para la misma clave, cada valor se escribirá en el archivo de configuración. Esto hace que sea seguro, por ejemplo, agregar refspecs de recuperación adicionales al remoto de origen.
Si está trabajando con su partición encriptada, considere mover la carpeta a una partición sin encriptar, por ejemplo a / tmp , ejecutar git pull
, y luego retroceder.
También puede intentar habilitar rutas de archivo largas.
Si ejecuta Windows 10 Home Edition, puede cambiar su Registro para habilitar las rutas largas.
Vaya a HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem
en regedit
y luego establezca LongPathsEnabled
en 1
.
Si tiene Windows 10 Pro o Enterprise, también puede usar políticas de grupo local.
Vaya a Configuración del equipo → Plantillas administrativas → Sistema → Sistema de archivos en gpedit.msc
, abra Habilitar rutas largas de Win32 y configúrelo como Habilitado .
También tuve este error, pero en mi caso la causa estaba usando una versión desactualizada de npm, v1.4.28.
Actualización a npm v3 seguido de
rm -rf node_modules
npm -i
trabajó para mi. npm número 2697 tiene detalles de la estructura de carpetas "totalmente plana" incluida en npm v3 (publicado el 2015-06-25).