J'utilise Git-1.9.0-preview20140217
pour Windows. Comme je le sais, cette version devrait résoudre le problème avec des noms de fichiers trop longs. Mais pas pour moi.
Certes , je fais quelque chose de mal: je l' ai fait git config core.longpaths true
et git add .
puis git commit
. Tout s'est bien passé. Mais quand je fais maintenant un git status
, j'obtiens une liste de fichiers avec Filename too long
, par exemple:
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
C'est assez simple à reproduire pour moi: il suffit de créer une application web Yeoman avec le générateur angulaire ("yo angular") et de le supprimer node_modules
du .gitignore
fichier. Répétez ensuite les commandes Git susmentionnées.
Qu'est-ce que j'oublie ici?
Réponses:
Git a une limite de 4096 caractères pour un nom de fichier, sauf sous Windows lorsque Git est compilé avec msys. Il utilise une ancienne version de l'API Windows et il y a une limite de 260 caractères pour un nom de fichier.
Donc, pour autant que je comprends cela, c'est une limitation de msys et non de Git. Vous pouvez lire les détails ici: https://github.com/msysgit/git/pull/110
Vous pouvez contourner cela en utilisant un autre client Git sous Windows ou définissez-
core.longpaths
letrue
comme expliqué dans d'autres réponses.Git est construit comme une combinaison de scripts et de code compilé. Avec la modification ci-dessus, certains scripts peuvent échouer. C'est la raison pour laquelle core.longpaths ne doit pas être activé par défaut.
La documentation Windows sur https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file contient quelques informations supplémentaires:
la source
core.longpaths
n'est pas activé par défaut. Notez également que Git pour Windows n'est pas compilé avec MSYS. Au lieu de cela, il s'agit d'une application Windows native qui est fournie avec un environnement MSYS dépouillé.Vous devriez pouvoir exécuter la commande
ou ajoutez-le manuellement à l'un de vos fichiers de configuration Git pour activer cette fonctionnalité, une fois que vous êtes sur une version prise en charge de Git. Il ressemble peut-être à la version 1.9.0 et aux versions ultérieures.
la source
Cela pourrait aider:
Explication de base: Cette réponse suggère de ne pas appliquer un tel paramètre aux configurations du système global (à tous les projets, afin d'éviter
--system
ou d'--global
étiqueter). Cette commande ne résout le problème qu'en étant spécifique au projet en cours.la source
--system
qui l'appliquera à tous les projetsCréez .gitconfig et ajoutez
Vous pouvez créer le fichier dans un emplacement de projet (pas sûr) et également dans l'emplacement global. Dans mon cas, l'emplacement est
C:\Users\{name}\
.la source
git config --global core.longpaths true
.gitconfig
fichier dans le chemin suivantC:\Users\{username}
et simplement le modifier.Étapes à suivre:
Remarque : si l'étape 2 ne fonctionne pas ou donne une erreur, vous pouvez également essayer d'exécuter cette commande:
En savoir plus
git config
ici .la source
La meilleure solution est d'activer le paramètre longpath de Git.
Mais une solution de contournement qui fonctionne est de supprimer le dossier node_modules de Git:
Ajoutez node_modules dans une nouvelle ligne à l'intérieur du fichier .gitignore. Après cela, poussez vos modifications:
la source
node_modules
: lepackages.lock
fichier est là pour s'assurer que la version installée parnpm install
sera toujours la même, jusqu'à ce que vous fassieznpm update
Pour être entièrement sûr qu'il prend effet immédiatement après l'initialisation du référentiel, mais avant que l'historique distant ne soit récupéré ou que tous les fichiers soient extraits, il est plus sûr de l'utiliser de cette façon:
Plus d'informations
la source
L'exécution
git config --system core.longpaths true
m'a renvoyé une erreur:Correction de l'exécution de la commande au niveau global:
la source
Vous pouvez également essayer d'activer les longs chemins d'accès aux fichiers.
Si vous exécutez Windows 10 Home Edition, vous pouvez modifier votre registre pour activer les longs chemins.
Aller à
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
enregedit
puis misLongPathsEnabled
à1
.Si vous avez Windows 10 Pro ou Enterprise, vous pouvez également utiliser des stratégies de groupe locales.
Aller à Configuration ordinateur → Modèles d' administration → Système → Système de fichiers à
gpedit.msc
, ouvert Activer longs chemins Win32 et réglez -le sur Activé .la source
La commande ci-dessus a fonctionné pour moi. L'utilisation de '--system' m'a donné une erreur de fichier de configuration non verrouillé
la source
Déplacer le référentiel vers la racine de votre lecteur (correction temporaire)
Vous pouvez essayer de déplacer temporairement le référentiel local (le dossier entier) vers la racine de votre lecteur ou aussi près de la racine que possible.
Étant donné que le chemin est plus petit à la racine du lecteur, il résout parfois les problèmes.
Sous Windows, je déplacerais ceci vers
C:\
la racine d'un autre lecteur.la source
J'ai également eu cette erreur, mais dans mon cas, la cause était une version obsolète de npm, v1.4.28.
Mise à jour vers npm v3 suivie de
travaillé pour moi. Le problème npm 2697 contient des détails sur la structure de dossiers "au maximum plat" incluse dans npm v3 (publiée le 2015-06-25).
la source
Si vous travaillez avec votre partition chiffrée, envisagez de déplacer le dossier vers une partition non chiffrée, par exemple a / tmp , en cours d'exécution
git pull
, puis en revenant en arrière.la source
Dans une machine Windows
Exécutez l'invite de commandes en tant qu'administrateur, puis exécutez la commande ci-dessous
la source