C'è un modo per rimuovere tutti i commit prima di un commit specificato e utilizzare quello commit come iniziale?Rimuovi commit prima del commit specifico
risposta
Diciamo che la nuova antica commettere di hash è X e possiamo usare "oldroot" e "newroot" temporaneamente:
git checkout -b oldroot X
TREE=`git write-tree`
COMMIT=`echo "Killed history" | git commit-tree "$TREE"`
git checkout -b newroot "$COMMIT"
git rebase --onto newroot oldroot master
# repeat for other branches than master that should use the new initial commit
git checkout master
git branch -D oldroot
git branch -D newroot
git gC# WARNING: if everything's done right, this will actually delete your history from the repo!
che creerà un 'newroot' impegnarsi con gli stessi contenuti come la 'oldroot' commettere, ma senza genitori. Quindi, rebase tutti gli altri rami sulla nuova radice, che dovrebbe essere nella cronologia di tutti loro.
MODIFICA: testata e riparata; un po 'più tardi, raffinato un po'
Si noti che "Cronologia uccisa" diventa il nuovo messaggio di commit per il commit iniziale. Se vuoi qualcos'altro, ad esempio il messaggio originale, basta inserirlo dentro. –
La soluzione più facile sarebbe, Considerate inizialmente la filiale ha commettere principale e avete fatto un commit prima, ora avete anche un commettete secondo in cima prima. In modo da avere qualcosa di simile:
main->first->second
Ora si vuole avere secondo in cima principale piuttosto che sulla parte superiore del prima. Qualcosa di simile:
main->second->first or main->second
Si può semplicemente fare,
git rebase -i main
Questo vi darà una shell interattiva in cui è possibile modificare l'ordine di commit o rimuovere qualunque commettere di vostra scelta.
- 1. Rimuovi file dal commit modificato
- 2. Rimuovi commit vuoto in git
- 3. Git - Rimuovi commit dalla cronologia
- 4. Rimuovi le informazioni di commit da git commit
- 5. Git Confronta i file prima del commit
- 6. Unisci a un commit specifico
- 7. git che mi ha richiesto prima del commit
- 8. hook pre-commit bypass per commit commit
- 9. Come unire un commit specifico in Git
- 10. Come "pull request" un commit specifico
- 11. Subversion: Come unire un commit specifico
- 12. Come rivedere uno specifico commit su Git
- 13. Esegui lo script prima del commit e includi l'aggiornamento in questo commit?
- 14. Modifica del messaggio di commit Git fatto prima di un'unione
- 15. "unadd" un file in svn prima del commit
- 16. Come visualizzare le modifiche a un file prima del commit?
- 17. Leggi l'ultimo commit del git e il numero di commit
- 18. Come ottenere l'ennesimo commit dal primo commit?
- 19. Differenze tra commit, commit e push, commit e sincronizzazione
- 20. Arresta un commit git da parte di un autore specifico usando il gancio di pre-commit
- 21. Ripristino a un commit specifico basato su ID commit con Git?
- 22. Numero di commit tra due commit
- 23. git commit -m vs. git commit -am
- 24. Come creare il ramo da commit specifico in ramo diverso
- 25. Posso eseguire un commit specifico con il compositore?
- 26. Git - rimuovi commit con changeset vuoto utilizzando il ramo filtro
- 27. Nascondere una stringa in un file prima di commit git
- 28. commit trifase
- 29. Come scaricare un commit Git specifico da un repository?
- 30. Usa Hudson per creare un commit git specifico
So che ho visto un tutorial da qualche parte per fare qualcosa di simile ... Ha mostrato come è possibile mantenere un repo storico che termina con commit X, quindi prendere commit X fino a HEAD e creare un nuovo repo da loro, con un'annotazione su X su come accedere al repository storico. Non riesco a trovarlo adesso, ma è possibile. – Daenyth