2016-05-17 8 views
5

Ich habe ein Problem, bei dem ich, wenn ich git stash -u (dh alle, einschließlich nicht verfolgte Dateien verstauen) ausführen, Git mein Node_Modules-Verzeichnis entfernt. Obendrein stellt es es nicht einmal auf git stash pop wieder her - ich muss npm install wieder laufen lassen, um es zurückzubekommen.Warum entfernt Git Stash meinen Ordner node_modules?

node_module wird ignoriert in .gitignore (über die Linie node_modules/*), und soweit ich sehen kann wurde nie in der Geschichte des Projekts begangen (git log --all -- node_modules gibt nichts zurück). Sollte nicht git stash es ignorieren (auch wenn untracked Dateien commit)? Ich bin mir ziemlich sicher, dass ich git stash wie dieses zuvor ohne Probleme mit node_modules verwendet habe.

Update: Ich habe überprüft, und dieses Problem ist nicht auf ein bestimmtes Projekt beschränkt - es scheint zu passieren, wo ich git stash -u ausführen. Für was es wert ist, ist meine Git-Version 2.6.3.windows.1 (unter Windows).

+0

Kein Problem für mich. Es scheint nicht das Problem in Git. Sie könnten es auf der Maschine anderer versuchen und sehen, ob es passiert? – Landys

+0

Verwenden Sie dieselbe Version von Git wie ich? –

+0

Nein. Aber ich denke, es hat nichts mit der Version von Git zu tun. Saeed Antwort unten könnte die richtige Richtung haben. – Landys

Antwort

-1

npm erstellt sehr lange Pfade, die unter Windows maximal 260 Zeichen überschreiten können, abhängig davon, wie lange der Pfad Ihres Repo-Stammverzeichnisses ist. Dies könnte erklären, warum Sie manchmal sehen, dass es funktioniert und manchmal nicht. Wenn Sie npm verwenden, sollten Sie sicherstellen, dass Ihre Repos immer einen sehr kurzen Root-Pfad haben.

+0

Ich denke, das war früher für npm 2 der Fall, aber npm 3 setzt alle Unterabhängigkeiten in den Ordner node_modules auf oberster Ebene, so dass du nicht mehr die massive Verschachtelung bekommst, die früher stattfand. Dies führte meiner Erfahrung nach dazu, dass Windows * Knoten * Module nicht * löschen konnte, während das Problem, das ich habe, das Gegenteil ist. Außerdem kann ich nicht sehen, warum die Pfade von npm speziell ein Problem mit Git stash verursachen würden. Vor allem, wenn node_modules sowieso gitignored ist ... –

1

Sie haben von Ihrem .gitignore Eintrag ändern:

node_modules/* 

zu

node_modules/ 

Weitere Details hier: Git Stash Can Delete Ignored Files (git stash -u)

+1

Leider funktionierte das bei mir nicht - auch ohne den Stern löscht 'git stash -u' den Ordner node_modules. –