あなたがどれだけ進んでいるか、そしてあなたがそれらに望むブランチに応じて、たくさんの異なる方法があります。
古典的な間違いを考えてみましょう:
$ git checkout master
... pause for coffee, etc ...
... return, edit a bunch of stuff, then: oops, wanted to be on develop
そのため、今はまだコミットしていないこれらの変更をmasterオンにしたいとしdevelopます。
あなたがいる場合がありませんdevelopまだ、方法は簡単です:
$ git checkout -b develop
これにより、developどこにいても新しいブランチが作成されます。これでコミットでき、新しいものはすべてオンになっていdevelopます。
あなたは持っていdevelopます。Gitで何もせずに切り替えられるかどうかを確認します。
$ git checkout develop
これは成功するか、文句を言うでしょう。成功した場合、すばらしいです!コミットするだけです。そうでない場合(error: Your local changes to the following files would be overwritten ...)、まだ多くのオプションがあります。
おそらく最も簡単な方法ですgit stash(クリックすることに私を打ち負かした他のすべての回答者がpost言ったように)。git stash saveor git stash push、1、または/のgit stash省略形である単なるプレーンを実行します。savepush
$ git stash
これは、奇妙な非分岐yメソッドを使用してコードをコミットします(はい、実際にはいくつかのコミットを行います)。コミットはどのブランチにも「オン」ではありませんが、リポジトリに安全に保存されるようになったため、ブランチを切り替えて、スタッシュを「適用」できます。
$ git checkout develop
Switched to branch 'develop'
$ git stash apply
すべてがうまく行き、結果が気に入ったらgit stash drop、隠しておくべきです。これにより、ブランチ以外の奇妙なコミットへの参照が削除されます。(それらはまだリポジトリー内にあり、緊急時に取得できることもありますが、ほとんどの目的で、それらがその時点でなくなったと考える必要があります。)
このapplyステップでは、Gitの強力な基礎となるマージ機構を使用して、隠された変更をマージします。ブランチマージを実行するときに使用するのと同じ種類の処理です。つまり、誤って作業していたブランチが、意図していたブランチと十分に異なる場合、「マージの競合」が発生する可能性があります。したがって、Git自体がマージの競合を検出しなかった場合でも、スタッシュが適切に適用されていると想定する前に、結果を注意深く検査することをお勧めします。
多くの人がを使用していますgit stash pop。これはの省略形ですgit stash apply && git stash drop。それはそれで問題ありませんが、アプリケーションが混乱して、この道を進みたくないと決めた場合、隠しておくことは簡単にはできません。そのため、満足した場合のみ、apply結果を個別に検査することをお勧めしdropます。(もちろん、これは別のコーヒー休憩を取り、あなたがやっていたことを忘れて戻ってきて、間違ったことをすることができる別のポイントを導入するので、それは完全な治療法ではありません。)
1save内にはgit stash save、新たなスタッシュを作成するための古い動詞です。Gitバージョン2.13では、新しい動詞が導入され、より一貫性をpop保ち、作成コマンドにオプションを追加できるようになりました。Gitバージョン2.16は古い動詞を正式に非推奨にしました(ただし、私がこれを編集しているときの最新リリースであるGit 2.23では引き続き機能します)。
git stashgit-scm.com/book/en/Git-Tools-Stashing