Risposte:
Sembra che tutto ciò di cui hai bisogno sia il seguente:
git stash
git checkout branch123
git stash apply
Quindi dovresti tornare sul tuo ramo senza toccare il ramo principale.
stashsalva le modifiche locali, quindi le stash applyriporta.
git reset --hard HEADe sei tornato all'ultimo commit che hai fatto alla tua filiale principale.
La risposta accettata è la più completa, ma esiste un caso speciale in cui è possibile semplificare. Se i file che hai modificato nella directory di lavoro sono identici in entrambi mastere branch123puoi semplicemente farlo
git checkout branch123
Non è necessario archiviare nulla, poiché il comportamento predefinito checkoutè NON sovrascrivere i file modificati nella directory di lavoro, in modo da non perdere nulla. (Questo è stato effettivamente menzionato nei commenti prima da Cascabel)
Come altre persone hanno menzionato nei commenti, se branch123non esiste ancora, puoi farlo
git checkout -b branch123
Sulla base di quello che ho trovato qui .
git checkout -b newbranch
mastere branch123. Vedi la mia risposta modificata.
git stash è quello che ti serve.
una spiegazione completa può essere trovata in Git-Tools-Stashing
Poiché è possibile creare un nuovo ramo ma non è possibile effettuare il checkout di un ramo esistente mentre i file sono stati estratti, ho trovato il seguente trucco usando un ramo temporaneo per funzionare:
Questo scenario funziona almeno con il plugin Git VS 2015 ma molto probabilmente funzionerebbe con qualsiasi strumento git.
EDIT: ho scoperto che dovrai eseguire un rebase (git rebase --onto) del ramo temporaneo prima di eseguire l'unione. Altrimenti le modifiche nel master verranno incluse nell'unione. Un passaggio aggiuntivo 3.5 sopra. Vedi ulteriori informazioni su rebase qui: https://git-scm.com/book/en/v2/Git-Branching-Rebasing