Ho due rami fuori dal master, ognuno per una funzione diversa, e quindi ho un ramo di sintesi che combina i due. Ho affidato qualcosa al ramo di sintesi, ma ora vedo che avrei preferito applicare quel cambiamento a uno dei rami in particolare a quella caratteristica. C'è un modo per farlo inapplicato/applicare qualche altra manovra con git?In git, come faccio a rimuovere un commit da un ramo e applicarlo a un ramo diverso?
21
A
risposta
27
Cherry-pick esegue il commit sul ramo di destinazione e reimposta il ramo di origine. Supponendo, si desidera spostare l'ultimo commit da source
ramo a target
, fare:
git checkout target
git cherry-pick source
git checkout source
git reset --hard source^
Se il commit non era l'ultima, si dovrà utilizzare git rebase -i
al posto del l'ultimo comando e scegli specifica impegnarsi nome per il tuo cherry-pick
.
2
In genere, quando faccio qualcosa di simile, lo farò:
- Creare un file di patch inversa usando git diff (ad es
git diff HEAD^ HEAD
) - applicare questa patch inversa al ramo Voglio rimuovere il cambiamento a partire dal.
- Partenza il ramo voglio il cambiamento sul
- Usa
git cherry-pick
per applicare il applicabile commettere
Credo che ci sia un modo più semplice, ma io preferisco questo dato che io uso (e ricordare) il diff/cherry-pick comandi migliori
+3
passaggi 1 + 2 == git revert – Dustin
Problemi correlati
- 1. Git esclude un commit in un ramo
- 2. Come creare il ramo da commit specifico in ramo diverso
- 3. Come unire git commit nel ramo di sviluppo a un ramo di funzionalità
- 4. Come rimuovere un ramo git in Netbeans?
- 5. Come resettare un ramo su un altro ramo con git?
- 6. Come unire un ramo ad un altro ramo in GIT?
- 7. Rimozione di commit Git su un ramo
- 8. Clona da un ramo diverso dal master
- 9. Come chiudere un ramo Git?
- 10. Come faccio a fare riferimento a un ramo esistente da un problema in GitHub?
- 11. Come unire un file specifico da un ramo in un altro ramo in Git
- 12. Spostamento di commit da un ramo all'altro
- 13. Git: creato nuovo ramo da un ramo sbagliato
- 14. Come rimuovere un ramo localmente?
- 15. Come impostare un ramo git per passare a un remoto con un nome di ramo diverso e passare da un URL completamente diverso
- 16. Da master, commit in un altro ramo
- 17. Git avviare il ramo da un altro ramo senza rilevamento
- 18. Aggiunta git sottostruttura da un ramo
- 19. Git: come passare da "nessun ramo" a un nuovo ramo remoto?
- 20. Spingere un ramo locale fino a GitHub
- 21. Blocco di un ramo Git
- 22. Git: Unisci più commit da un ramo all'altro
- 23. Git: 1.Elenco di tutti i file in un ramo, 2.compare file da un ramo diverso
- 24. JGit: Checkout a un ramo remoto
- 25. Utilizzando git, come si spostano alcune modifiche non salvate da un ramo a un altro ramo in una cartella diversa?
- 26. Scopri se esiste un commit particolare su un ramo git
- 27. clone git in un ramo
- 28. Riproduce l'ultimo N git commesso su un ramo diverso
- 29. Come rimuovere un ramo denominato "--orphan"
- 30. (git): come portare un commit specifico dal ramo upstream?
Grazie! Funziona alla grande. – prismofeverything
Nota che reset/rebase eseguono entrambi ** la riscrittura della cronologia **, quindi non dovrebbero essere usati se la cronologia è stata pubblicata - allora dovresti invece usare git-revert. –