2016-05-17 38 views
5

Sto riscontrando un problema in cui quando eseguo git stash -u (ad esempio, tutto inceppato, inclusi i file non tracciati), Git rimuove la mia directory node_modules. Inoltre, non lo ripristina nemmeno su git stash pop - Devo eseguire nuovamente npm install per recuperarlo.Perché git stash rimuove la mia cartella node_modules?

node_modules viene ignorato in .gitignore (tramite la riga node_modules/*) e, per quanto posso vedere, non è mai stato eseguito il commit nella cronologia del progetto (git log --all -- node_modules non restituisce nulla). git stash non dovrebbe ignorarlo (anche quando si esegue il commit di file non tracciati)? Sono abbastanza sicuro di aver usato git stash in questo modo senza problemi con node_modules.

Aggiornamento: Ho controllato, e questo problema non è limitato a un particolare progetto - sembra che succeda ovunque corro git stash -u. Per quello che vale, la mia versione Git è 2.6.3.windows.1 (su Windows).

+0

un problema per me. Non sembra il problema in git. Potresti provarlo con la macchina degli altri e vedere se succede? – Landys

+0

Stai usando la stessa versione di Git come me? –

+0

No. Ma immagino che non abbia nulla a che fare con la versione di Git. La risposta di Saeed in basso potrebbe avere la giusta direzione. – Landys

risposta

-1

npm crea percorsi molto lunghi, che possono superare i 260 caratteri massimi su Windows, a seconda di quanto è lungo il percorso della radice del protocollo. Questo potrebbe spiegare perché a volte vedi che funziona e altre volte no. Se stai usando npm, ti suggerisco di assicurarmi che i tuoi repository abbiano sempre un percorso root molto breve.

+0

Penso che questo fosse vero per npm 2, ma npm 3 colloca tutte le dipendenze secondarie nella cartella node_modules di livello superiore, quindi non si tende più a ottenere l'enorme nidificazione che si verificava. Inoltre, secondo la mia esperienza, questo tendeva a impedire a * Windows * di eliminare 'node_modules', mentre il problema che ho riscontrato è il contrario. Inoltre, non riesco a capire perché i percorsi di npm possano causare problemi con Git stash. Soprattutto quando node_modules è gitignored comunque ... –

1

Devi cambiare la voce .gitignore da:

node_modules/* 

a

node_modules/ 

Maggiori dettagli qui: Git Stash Can Delete Ignored Files (git stash -u)

+1

Sfortunatamente, questo non ha funzionato per me - anche senza l'asterisco, 'git stash -u' cancella ancora la cartella node_modules. –