Respostas:
Parece que tudo que você precisa é o seguinte:
git stash
git checkout branch123
git stash apply
Então você deve voltar ao seu próprio ramo sem tocar no ramo principal.
stashsalva as modificações locais e as stash applytraz de volta.
git reset --hard HEADe você voltou ao último commit que fez no seu ramo principal.
A resposta aceita é a mais completa, mas há um caso especial em que você pode simplificar. Se os arquivos que você modificou no diretório de trabalho são idênticos nos dois mastere branch123você pode simplesmente fazer
git checkout branch123
Não há necessidade de esconder nada, pois o comportamento padrão de checkoutNÃO substituir arquivos modificados no diretório de trabalho, para que você não perca nada. (Isso foi mencionado nos comentários primeiro por Cascabel)
Como outras pessoas mencionaram nos comentários, se branch123ainda não existir, você pode fazer
git checkout -b branch123
Com base no que encontrei aqui .
git checkout -b newbranch
mastere branch123. Veja minha resposta editada.
git stash é o que você precisa.
uma explicação completa pode ser encontrada em Git-Tools-Stashing
Como é possível criar uma nova ramificação, mas não é possível fazer check-out de uma ramificação existente enquanto os arquivos foram retirados, encontrei o seguinte truque usando uma ramificação temporária para trabalhar:
Esse cenário funciona pelo menos com o plug-in VS 2015 Git, mas provavelmente funcionaria com qualquer ferramenta git.
EDIT: Descobri que você terá que executar uma rebase (git rebase --onto) da ramificação temporária antes de executar a mesclagem. Caso contrário, as alterações no mestre serão incluídas na mesclagem. Um passo extra 3.5 acima. Veja mais sobre rebase aqui: https://git-scm.com/book/en/v2/Git-Branching-Rebasing