È possibile utilizzare sparse checkout per escludere il contenuto impegnato della directory node_modules
dall'albero di lavoro. Come dice la documentazione:
"Verifica sparsa" consente di compilare la directory di lavoro in modo spartano. Usa il bit skip-worktree
per dire a Git se vale la pena guardare un file nella directory di lavoro.
Ecco come lo si utilizza. In primo luogo, si attiva l'opzione sparseCheckout
:
git config core.sparseCheckout true
Poi, si aggiunge il percorso node_modules
come negazione nel file .git/info/sparse-checkout
:
echo -e "/*\n!node_modules" >> .git/info/sparse-checkout
Questo creerà un file chiamato sparse-checkout
contenente:
/*
!node_modules
che significa efficacemente ignorare ilnode_modules
directory durante la lettura di un albero di commit nella directory di lavoro.
Se poi si desidera includere la directory node_modules
di nuovo (cioè rimuovere il skip-worktree
bit dalle sue file) è necessario modificare il file sparse-checkout
a contenere solo /*
- che è "includere tutti i percorsi" - e aggiornare la directory di lavoro utilizzando git read-tree
:
echo "/*" > .git/info/sparse-checkout
git read-tree -mu HEAD
È quindi possibile disabilitare cassa sparse complessivamente modificando la sua variabile di configurazione false
:
git config core.sparseCheckout false
Si noti che sparse checkout è stato introdotto per la prima volta in Git 1.7.0.
fonte
2015-11-26 09:12:34
Grazie! Solo per confermare. se un giorno rimuoverò 'node_modules' dal file' sparse-checkout', posso normalmente tornare al passato e vedere cosa conteneva in passato? (Ho letto il link che hai inviato, ma non ho capito cosa significhi 'skip-worktree bit '... – Aminadav
Sì, puoi. Ho aggiornato la mia risposta per includere come re-introdurre la directory' node_modules' e disabilitare il check-out sparsi –
Molto interessante.Dovrò verificarlo (non git checkout), ho bisogno di testarlo :) – Aminadav