Se non hai effettuato modifiche
Se le modifiche sono compatibili con l'altro ramo
Questo è il caso della domanda perché l'OP vuole impegnarsi in un nuovo ramo e si applica anche se le modifiche sono compatibili con il ramo di destinazione senza innescare una sovrascrittura.
Come nella risposta accettata da John Brodie, puoi semplicemente controllare la nuova filiale e impegnare il lavoro:
git checkout -b branch_name
git add <files>
git commit -m "message"
Se le modifiche non sono compatibili con l'altro ramo
Se viene visualizzato l'errore:
error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches
Quindi puoi riporre il tuo lavoro, creare un nuovo ramo, quindi inserire le modifiche allo stash e risolvere i conflitti:
git stash
git checkout -b branch_name
git stash pop
Sarà come se avessi apportato tali modifiche dopo aver creato il nuovo ramo. Quindi puoi impegnarti come al solito:
git add <files>
git commit -m "message"
Se hai apportato modifiche
Se si desidera mantenere gli commit nel ramo originale
Vedi la risposta di Carl Norum con cherry-picking, che è lo strumento giusto in questo caso:
git checkout <target name>
git cherry-pick <original branch>
Se non si desidera mantenere gli commit nel ramo originale
Vedi la risposta di joeytwiddle su questo potenziale duplicato . Seguire uno dei passaggi precedenti come appropriato, quindi ripristinare il ramo originale:
git branch -f <original branch> <earlier commit id>
Se hai trasferito le tue modifiche su un telecomando condiviso come GitHub, non dovresti tentare questo rollback a meno che tu non sappia cosa stai facendo.