意気揚々と作業を進め、いざコミットしよう!という段で「ブランチ間違えてた!」ということはよくあると思います。
そんな時の簡単な対処法を紹介します。
前提
- 開発用ブランチは develop
- develop にコミットしようとした内容を master ブランチで作業してしまった
- master に影響がないように差分を develop だけにコミットしたい
対処法
行った作業を一旦退避させる
行った作業を一旦退避させるには下記コマンドを利用します。
git stash -u
※-u は Untracked(新規ファイルやリネームしたディレクトリ等)を含める場合に付与します)
コマンド実行後、作業途中の差分が保存された旨とその時点での最新のコミットが表示されます。
退避させた作業を一覧表示する
git stash で退避させた作業を一覧で見るには下記コマンドを利用します。
git stash list
先程退避した内容が出てきます。
「WIP」とは Work in Progress(作業中)の略で、上記のメッセージを簡単に訳すと「masterブランチのコミットハッシュa978947のコミット上で作業中」と記載されているのがわかります。
git stash コマンドを使用する度にこのリストに作業が追加されていきます。
退避させた作業を別のブランチに適用する
退避させた作業を適用させたいブランチに移動します。
git checkout develop
ここでは develop へ適用させたいので develop へ移動し、下記コマンドを実行します。
git stash apply
apply は「適用」という意味を持つのでそのままですね。
このコマンドを実行した結果、develop ブランチに、最初に master ブランチで行った作業と同じ差分が適用されました。
忘れずにコミットしておきます。
退避した作業を削除する
git stash で作業を退避させる度に退避領域に作業がどんどん溜まっていくため、apply コマンドで適用する際に誤った作業を適用してしまうことを避けるために、余程の複雑な作業を行っていない限り退避領域はきれいにしておきたいです。
退避領域に保存されている作業を一括で削除するには下記コマンドを利用します。
git stash clear
下記を見ると、1回目のリスト表示で表示されていた作業が、clear 後に削除されていることがわかります。
これで何事もなかったように develop で作業出来ます!gitありがとう!