Ich benutze Git-1.9.0-preview20140217
für Windows. Wie ich weiß, sollte diese Version das Problem mit zu langen Dateinamen beheben. Aber nicht für mich.
Ich mache etwas falsch sicher: Ich habe git config core.longpaths true
und git add .
dann git commit
. Alles gut gelaufen. Aber wenn ich jetzt a mache git status
, bekomme ich eine Liste von Dateien mit Filename too long
zum Beispiel:
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
Für mich ist die Reproduktion ganz einfach: Erstellen Sie einfach eine Yeoman- Webanwendung mit dem Winkelgenerator ("yo angle") und entfernen Sie sie node_modules
aus der .gitignore
Datei. Wiederholen Sie dann die oben genannten Git-Befehle.
Was fehlt mir hier?
Antworten:
Git hat ein Limit von 4096 Zeichen für einen Dateinamen, außer unter Windows, wenn Git mit msys kompiliert wird. Es verwendet eine ältere Version der Windows-API und es gibt ein Limit von 260 Zeichen für einen Dateinamen.
Soweit ich das verstehe, ist es eine Einschränkung von msys und nicht von Git. Sie können die Details hier lesen: https://github.com/msysgit/git/pull/110
Sie können dies umgehen , indem sie eine anderes Git - Client unter Windows oder Satz verwendet ,
core.longpaths
umtrue
wie in anderen Antworten erklärt.Git ist eine Kombination aus Skripten und kompiliertem Code. Mit der obigen Änderung können einige der Skripte fehlschlagen. Aus diesem Grund ist core.longpaths nicht standardmäßig aktiviert.
Weitere Informationen finden Sie in der Windows-Dokumentation unter https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file :
quelle
core.longpaths
diese Option standardmäßig nicht aktiviert ist. Beachten Sie auch, dass Git für Windows nicht gegen MSYS kompiliert wurde. Stattdessen handelt es sich um eine native Windows-Anwendung, die mit einer abgespeckten MSYS-Umgebung geliefert wird.Sie sollten in der Lage sein, den Befehl auszuführen
oder fügen Sie es manuell zu einer Ihrer Git-Konfigurationsdateien hinzu, um diese Funktionalität zu aktivieren, sobald Sie eine unterstützte Version von Git verwenden. Es sieht aus wie vielleicht 1.9.0 und danach.
quelle
Dies könnte helfen:
Grundlegende Erklärung: Diese Antwort schlägt vor, diese Einstellung nicht auf die globalen Systemkonfigurationen (auf alle Projekte, bei denen Konfigurationen vermieden
--system
oder--global
markiert werden) anzuwenden . Dieser Befehl löst das Problem nur, indem er spezifisch für das aktuelle Projekt ist.quelle
--system
der ihn auf alle Projekte anwendetErstellen Sie .gitconfig und fügen Sie hinzu
Sie können die Datei an einem Projektspeicherort (nicht sicher) und auch am globalen Speicherort erstellen. In meinem Fall ist der Ort
C:\Users\{name}\
.quelle
git config --global core.longpaths true
.gitconfig
Datei leicht im folgenden Pfad findenC:\Users\{username}
und einfach bearbeiten.Schritte zum folgen:
Hinweis : Wenn Schritt 2 nicht funktioniert oder einen Fehler anzeigt, können Sie auch versuchen, diesen Befehl auszuführen:
Lesen Sie mehr über
git config
hier .quelle
Die bessere Lösung besteht darin, den Longpath-Parameter von Git zu aktivieren.
Eine Problemumgehung, die funktioniert, ist das Entfernen des Ordners node_modules von Git:
Fügen Sie node_modules in einer neuen Zeile in der .gitignore-Datei hinzu. Drücken Sie anschließend Ihre Änderungen:
quelle
node_modules
: Diepackages.lock
Datei ist hier, um sicherzustellen, dass die von installierte Versionnpm install
immer dieselbe ist, bis Sie einenpm update
Um ganz sicher zu sein, dass es unmittelbar nach der Initialisierung des Repositorys wirksam wird, aber bevor der Remote-Verlauf abgerufen oder Dateien ausgecheckt werden, ist es sicherer, ihn folgendermaßen zu verwenden:
Mehr Info
quelle
Beim Ausführen wurde
git config --system core.longpaths true
mir ein Fehler gemeldet:Behoben mit der Ausführung des Befehls auf globaler Ebene:
quelle
Sie können auch versuchen, lange Dateipfade zu aktivieren.
Wenn Sie Windows 10 Home Edition ausführen, können Sie Ihre Registrierung ändern, um lange Pfade zu aktivieren.
Gehen Sie zu
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
inregedit
und setzen Sie dannLongPathsEnabled
auf1
.Wenn Sie Windows 10 Pro oder Enterprise verwenden, können Sie auch lokale Gruppenrichtlinien verwenden.
Gehen Sie zu Computerkonfiguration → Administrative Vorlagen → System → Dateisystem in
gpedit.msc
, öffnen Sie Win32-Langpfade aktivieren und setzen Sie es auf Aktiviert .quelle
Der obige Befehl hat bei mir funktioniert. Die Verwendung von '--system' gab mir den Fehler, dass die Konfigurationsdatei nicht gesperrt war
quelle
Verschieben Sie das Repository in das Stammverzeichnis Ihres Laufwerks (temporärer Fix)
Sie können versuchen, das lokale Repository (den gesamten Ordner) vorübergehend in das Stammverzeichnis Ihres Laufwerks oder so nahe wie möglich am Stammverzeichnis zu verschieben.
Da der Pfad im Stammverzeichnis des Laufwerks kleiner ist, werden die Probleme manchmal behoben.
Unter Windows würde ich dies in
C:\
das Stammverzeichnis eines anderen Laufwerks verschieben.quelle
Ich hatte auch diesen Fehler, aber in meinem Fall war die Ursache die Verwendung einer veralteten Version von npm, v1.4.28.
Aktualisierung auf npm v3 gefolgt von
arbeitete für mich. Die npm-Ausgabe 2697 enthält Details zur Ordnerstruktur "maximal flach" in npm v3 (veröffentlicht am 25.06.2015).
quelle
Wenn Sie mit Ihrer verschlüsselten Partition arbeiten, sollten Sie den Ordner in eine unverschlüsselte Partition verschieben, z. B. a / tmp , ausführen
git pull
und dann zurück verschieben.quelle
In einer Windows-Maschine
Führen Sie die Eingabeaufforderung als Administrator aus und führen Sie dann den folgenden Befehl aus
quelle