あなたがどれだけ進んでいるか、そしてあなたがそれらに望むブランチに応じて、たくさんの異なる方法があります。
古典的な間違いを考えてみましょう:
$ 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 save
or git stash push
、1、または/のgit stash
省略形である単なるプレーンを実行します。save
push
$ 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 stash
git-scm.com/book/en/Git-Tools-Stashing