2009-11-20 11 views

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.

+0

Grazie! Funziona alla grande. – prismofeverything

+6

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. –

2

In genere, quando faccio qualcosa di simile, lo farò:

  1. Creare un file di patch inversa usando git diff (ad es git diff HEAD^ HEAD)
  2. applicare questa patch inversa al ramo Voglio rimuovere il cambiamento a partire dal.
  3. Partenza il ramo voglio il cambiamento sul
  4. 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