コミットをする前に作業を、一時的に避けておきたいときがありませんか?
例えば、作業ブランチを切らずに作業してしまった場合や、作業中に急ぎの別の作業が入った場合、作業中にブランチを切り替えたい場合など、今やっている作業を一時的に避けておきたいときに便利なのが、git stash
というコマンドです。
作業を退避させるには
git stash
git stash
というコマンドをターミナルで打つと、作業ツリーから作業していた内容が一旦、見えなくなります。試しに、git status
を打つと、差分はないと言われます。
On branch feature/lesson26-2
nothing to commit, working tree clean
stashした内容を確認するには、git stash list
を使います。するとこのようなリストが表示されます。上に表示されているものほど新しい履歴となります。
stash@{0}: WIP on lesson26-2: 1a9d310 refactor: Remove class. # 一番新しい退避した作業内容
stash@{1}: WIP on lesson26-2: 1a9d310 refactor: Remove class.
退避した作業を戻す
下記のどちらかのコマンドで、退避した内容を、現在いるブランチに戻すことができます。
git stash apply
は退避した作業の履歴が残ったままになります。git stash pop
は退避した作業の履歴が消えます。そのままだと、一番新しい作業履歴を戻してくれますが、どの履歴を戻すのかは、stash@{1}
などで、指定することも可能です。
git stash apply //退避の一覧から該当の作業を削除しない
git stash pop //退避の一覧から該当の作業を削除する
//戻す作業を指定するとき
git stash apply stash@{1}
git stash pop stash@{1}
git stashの注意点
git stash
は、新しく追加したファイルについては、退避の対象に含まれませんので、ご注意ください。まだ追跡されていない新規のファイルを退避させたいときは、下記のコマンドにします。
git stash -u
以上、簡単に 作業を一時的に退避させるgit stashの使い方と注意点をご説明させて頂きました。