Ho fatto accidentalmente 10 commit sul ramo "testing" quando intendevo impegnarli sul ramo "master". Gli altri commit sul ramo "testing" sono spazzatura, quindi non voglio fonderlo con "master". Invece, voglio solo riprodurre gli ultimi 10 commit sul master.Riproduce l'ultimo N git commesso su un ramo diverso
risposta
- maestro git checkout
- git WhatChanged testare
- git cherry-pick _________
?
Rebase dovrebbe farlo.
git rebase -p --onto master testing~10 testing
Questo copierà gli ultimi dieci commit su test a padroneggiare e fare che il nuovo test (il vecchio test sarà orfano). Quindi puoi unire il master al test come avanzamento rapido.
git checkout master
git merge testing
Usato la risposta di Ron prima che questo fosse pubblicato. –
Forse vale la pena notare che questo lascia test allo stesso punto del master, lasciando il "garbage" commesso orfano. Questo può o non può essere una buona cosa. Un'altra possibilità potrebbe essere git checkout master; git reset - test difficile; git rebase --onto HEAD @ {1} HEAD ~ 10 –
@CharlesBailey Che git flog hai intenzione di colpire li? – Fredrick
Come detto nei commenti, la risposta -inspired rebase
è lasciando la 'spazzatura' commit orfani.
Basta usare semplici strumenti:
git checkout master
git merge testing
git checkout testing
git reset --hard HEAD~10 # Go back 10 commits (*1)
git checkout master
(* 1) Vi troverete a "perdere" impegna dal ramo testing
, in quanto avrete quei impegna a master
grazie al merge
.
- 1. commesso accidentalmente in git
- 2. Git - Telecomando diverso per ogni ramo
- 3. Come creare il ramo da commit specifico in ramo diverso
- 4. Creazione di un ramo git basato su un altro ramo
- 5. Come resettare un ramo su un altro ramo con git?
- 6. Hg quasi commesso nel ramo errato
- 7. Clona da un ramo diverso dal master
- 8. Rimozione di commit Git su un ramo
- 9. Esegui `git log` su un ramo remoto
- 10. Come unire un ramo ad un altro ramo in GIT?
- 11. html esporta ramo diverso
- 12. Posso unshelve su un ramo diverso in tfs 2008?
- 13. rendere git ramo il ramo principale
- 14. git checkout un altro ramo
- 15. Git esclude un commit in un ramo
- 16. Come impostare un ramo git per passare a un remoto con un nome di ramo diverso e passare da un URL completamente diverso
- 17. Git push master fatale: non sei attualmente su un ramo
- 18. Come unire un tag git su un ramo
- 19. Scopri se esiste un commit particolare su un ramo git
- 20. Blocco di un ramo Git
- 21. Come chiudere un ramo Git?
- 22. clone git in un ramo
- 23. In git, come faccio a rimuovere un commit da un ramo e applicarlo a un ramo diverso?
- 24. git push NON ramo corrente su remoto
- 25. Allentare un errore commesso, mentre schiacciando i commit nel GIT
- 26. Git: 1.Elenco di tutti i file in un ramo, 2.compare file da un ramo diverso
- 27. .n suffisso all'istruzione di ramo?
- 28. Informazioni su git: collegare il ramo a un repository remoto
- 29. Git: Ignora tutte le modifiche su un ramo locale divergente
- 30. Git: sposta il commit specifico su un altro ramo
Solo un fyi-cherry-pick eseguirà solo un commit alla volta, quindi dovrai eseguire il test cherry-picket ~ 9 quindi testare ~ 8 quindi ... testare. Ecco perché preferisco l'approccio di rebase suggerito da Talljoe ... ovviamente il risultato è lo stesso. In effetti, se esegui il rebase in modo interattivo, git utilizzerà effettivamente il cherry-pick sotto il cofano. –
@PatNotz 'git cherry-pick' al momento può attualmente eseguire più commit alla volta (ad esempio' git cherry-pick testing ~ 10..testing'). –
Non si dovrebbe mai usare 'cherry-pick'. Leggi [questo articolo] (http://www.draconianoverlord.com/2013/09/07/no-cherry-picking.html) per ulteriori informazioni. – Tim