Ho un repository di grandi dimensioni git in 3 anni, voglio cancellare la cronologia delle modifiche che erano più di un anno fa. È possibile? Può usare git rebase ma come?Git remove history commegna
risposta
L'eliminazione della cronologia probabilmente non risolverà il problema. È probabile che, ad un certo punto nel tempo, sia stato eseguito il commit di un grosso file nel repository e successivamente rimosso.
Vorrei dare un'occhiata a Find files in git repo over x megabytes, that don't exist in HEAD.
Indagare la magia nera denominata git replace
in this article from the Pro Git book che utilizza le circostanze esatte come esempio. Fondamentalmente, se riesci a trovare un punto nella cronologia che vuoi agire come la nuova radice, puoi sostituirla con un commit che non ha genitori, come se fosse stato creato dal nulla. È anche possibile memorizzare l'albero originale su una singola macchina, semplificando il ripristino della cronologia se ne hai ancora bisogno.
Si noti che un problema con git rebase
(e git replace
, per quella materia) è che si desidera riscrivere l'intero albero, inclusi i rami, in modo che puntino tutti a commit diversi. Ciò ha anche la conseguenza di rendere difficile per gli altri membri della tua squadra unire le loro modifiche, poiché tutti i genitori hanno SHA diversi rispetto a prima.
Da quello che ho letto , la cosa '' git replace'' non funzionerà attorno al problema degli hash cambianti –
@Jonas Hai ragione Riorganizzati la mia risposta per chiarire –
Grande! Sarebbe anche un grosso bug in git se potresti sostituire un'intera storia senza alcun cambiamento negli hash, dopotutto quegli hash crittografici sono uno dei motivi per usare git. –
- 1. Elimina tutto Git Commit History
- 2. Git branches & commit history after merge
- 3. Git: Equivalente di `--full-history` per` git bisect` e `git blame`
- 4. Rimozione del modello di file con git-update-index --remove
- 5. Esperienze con Javascript History Frameworks
- 6. Perché "history | vim" non funziona?
- 7. history pushState e scroll position
- 8. Mercurial: Fix a borked history
- 9. Threadlocal remove?
- 10. Python timedelta remove microseconds
- 11. htmlpurifier remove inline css
- 12. JQuery Remove() non funziona
- 13. JSoup Remove Elements
- 14. Remove Single Metaclass Method
- 15. Lista Iterator Remove()
- 16. Retrofit2 proguard remove param
- 17. MySQL Remove Trailing Zero
- 18. AngularJS remove attributes
- 19. Yii2 remove index.php dall'URL
- 20. jquery aggiungi remove class
- 21. JavaScript Remove Braces
- 22. avvertimento banca dati remove
- 23. remove css hover style
- 24. remove Default in migration?
- 25. operatore == e list :: remove()
- 26. Jquery - Remove() after hide()
- 27. remove ColorFilter/undo setColorFilter
- 28. LiveValidation .remove non funziona
- 29. XPATH remove attribute
- 30. jQuery remove() callback?
Git è fatto per salvare le tue modifiche. Qual è l'effetto dell'eliminazione della cronologia? –
La mia cronologia è troppo grande, la directory .git è più grande di 400 MB, in ogni clone devo scaricare tutta questa cronologia :( – paweb
Possibile duplicato: [Come rimuovo la vecchia cronologia da un repository git?] (Http://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository) –