回答:
必要なのは次のとおりです。
git stash
git checkout branch123
git stash apply
その後、マスターブランチに触れずに自分のブランチに戻る必要があります。
stash
ローカルの変更を保存してからstash apply
元に戻します。
git reset --hard HEAD
そして、あなたはあなたのマスターブランチに行った最後のコミットに戻ります。
受け入れられた答えは最も完全ですが、単純化できる特別な場合があります。作業ディレクトリで変更したファイルが両方master
で同一であり、branch123
簡単に実行できる場合
git checkout branch123
のデフォルトの動作はcheckout
作業ディレクトリ内の変更されたファイルを上書きしないため、何も失われることがないため、何も隠しておく必要はありません。(これは実際にCascabelによって最初にコメントで言及されました)
他の人がコメントで述べたように、branch123
まだ存在しない場合は、行うことができます
git checkout -b branch123
git checkout -b newbranch
master
とbranch123
。私の編集した答えを見てください。
git stash
必要なものです。
完全な説明はGit-Tools-Stashingにあります
新しいブランチを作成することは可能ですが、ファイルをチェックアウトしているときに既存のブランチをチェックアウトすることはできないため、一時的なブランチを使用して機能する次のトリックが見つかりました。
このシナリオは、少なくともVS 2015 Gitプラグインで機能しますが、ほとんどのgitツールで機能します。
編集:私は、マージを実行する前に、tempブランチのリベース(git rebase --onto)を実行する必要があることを発見しました。そうでない場合、マスターの変更はマージに含まれます。上記の追加のステップ3.5。リベースの詳細については、こちらをご覧ください:https : //git-scm.com/book/en/v2/Git-Branching-Rebasing