Stavo lavorando su un repository sul mio account GitHub e questo è un problema su cui mi sono imbattuto.
- Progetto Node.js con una cartella con alcuni pacchetti npm installati
- I pacchetti erano nella
node_modules
cartella - Aggiunta quella cartella al repository git e trasferito il codice su github (non pensavo alla parte npm in quel momento)
- Realizzato che non hai davvero bisogno che quella cartella faccia parte del codice
- Ho eliminato quella cartella, l'ho spinta
In quel caso, la dimensione del repository git totale era di circa 6 MB, mentre il codice effettivo (tutti tranne quella cartella) era solo di circa 300 KB .
Ora quello che sto cercando alla fine è un modo per sbarazzarmi dei dettagli di quella cartella del pacchetto dalla cronologia di git, quindi se qualcuno lo clona, non devono scaricare 6 MB di storia in cui gli unici file reali che otterranno a partire dall'ultimo commit sarebbe 300 KB.
Ho cercato possibili soluzioni per questo e ho provato questi 2 metodi
- Rimuovi il file dal repository git (cronologia)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Sembrava che il Gist funzionasse dove dopo aver eseguito la sceneggiatura, mostrava che si era sbarazzato di quella cartella e che poi mostrava che erano stati modificati 50 diversi commit. Ma non mi ha permesso di spingere quel codice. Quando ho provato a spingerlo, ha detto Branch up to date
ma ha mostrato che 50 commit sono stati modificati su a git status
. Gli altri 2 metodi non hanno aiutato neanche.
Ora, anche se ha dimostrato di essersi sbarazzato della cronologia di quella cartella, quando ho controllato le dimensioni di quel repository sul mio localhost, era ancora circa 6 MB. (Ho anche eliminato la refs/original
cartella ma non ho visto la modifica delle dimensioni del repository).
Quello che sto cercando di chiarire è che se c'è un modo per sbarazzarsi non solo della cronologia del commit (che è l'unica cosa che penso sia accaduta), ma anche di quei file che git continua a supporre che si voglia eseguire il rollback.
Diciamo che una soluzione è presentata per questo e viene applicata sul mio localhost ma non può essere riprodotta in quel repository GitHub, è possibile clonare quel repository, eseguire il rollback al primo commit eseguire il trucco e spingerlo (o significa che git lo farà hai ancora una storia di tutti questi commit? - aka. 6MB).
Il mio obiettivo finale qui è fondamentalmente trovare il modo migliore per sbarazzarsi del contenuto della cartella da git in modo che un utente non debba scaricare roba da 6 MB e possibilmente avere gli altri commit che non hanno mai toccato la cartella dei moduli (è carino molti di loro) nella storia di Git.
Come posso fare questo?