本記事の対象者
「作業用ブランチではなく、masterブランチで作業してしまっていた!」
「masterブランチでの作業内容を他のブランチに移行したい!」
そんな方に向けてこの記事を書いています。
※本記事の内容は、コミットしていない作業内容を他のブランチに移行するものなので、コミットした後にmasterブランチで作業してしまったことに気が付いた場合は、以下の記事を参考にgit reset --soft HEAD^
を実行し、適宜対応してください。
https://qiita.com/S42100254h/items/db435c98c2fc9d4a68c2
Step1.修正内容を確認する
masterブランチで修正した内容を以下のコマンドで確認します。
$ git status
Step2.修正内容を別の場所で一時保管する
masterブランチで作業した内容を、別の場所に一旦保管する必要があるので、以下のコマンドを実行します。
$ git stash
再度git status
を実行すると、Step1で確認した内容がなくなっていることを確認できます。
まめ知識①
git stash
した内容は以下のコマンドを実行することで確認ができます。
$ git stash list
まめ知識②
git stash
した作業内容は複数個保存しておくことができます。(下記は複数回git stash
を行った後にgit stash list
を実行した結果)
stash@{0}: WIP on master: 5668f19 Add DetailArticle page
stash@{1}: WIP on master: 8597bb6 Add ariticles show api
stash@{2}: WIP on master: 149c26f fix article detail design
Step3.新しいブランチに移行
以下のコマンドにより新しいブランチを作成し、
$ git checkout -b <ブランチ名>
Step2で保管した作業内容を移行するため、以下のコマンドを実行します。
$ git stash apply
これで保存していた作業内容を新しいブランチへの移行することができました。
まめ知識③
git stash apply
を実行すると、最後にgit stash
した作業内容が移行されます。複数個の作業内容を保管している場合は、移行したい内容を以下のように指定する必要があります。
$ git stash apply stash@{2}
まめ知識④
一時保管していた作業内容をstash listから全て削除したい場合は、以下のコマンドを実行します。
$ git stash clear
git stash list
を実行しても何も表示されないことが確認できます。
まとめ
以上の3ステップでmasterブランチでの作業内容を新しいブランチに移行することができました!
git stashは、本記事の利用方法以外にも、「急な仕事で他のことをしなければならないが、中途半端なのでコミットしたくない」といった場合に、一時保管しておくといった使い方もできます。
また、git stashに関連するコマンドは他にもたくさんあるので、気になる方は調べてみてください。