• Git関連

[Git]変更内容をaddやコミットせずに一時的に退避させる方法

今やっている作業を一時的にどっかに避けておいて、別のブランチを切って別の作業がしたい、みたいなこと、よくあると思います。

実際私もよくあるので、やり方を書いてみました。

参考になれれば幸いです。

変更の退避

git stash -u

上記をやると未追跡のファイル(addしていない)も含めて、退避することができます。

ちなみにオプションの -u がない場合には、追跡しているファイルのみ退避します。

なので、今回のようにaddしてないけど一度退避したい場合には -u を使用しましょう。

また、どんな変更かわかるようにコメントも添えることができます。

git stash -u コメント

特定のファイルだけ変更を退避

git stash -- <pathspec> [<pathspec>...]

pathspecの部分には退避したいファイルの相対パスをいれます。

ちなみに下記のように一気に複数のファイルを指定することもできます。

git stash -- ファイルの相対パス01 ファイルの相対パス02 ファイルの相対パス03

退避できたかの確認

git stash list

上記を実行して、「stash@{0}: WIP on ...」みたいにでれば退避できてます。

退避した変更を元に戻したい

最新のものを一気に戻したい

git stash pop

※stashの記録も削除されます

退避した作業のうち、一つだけを戻したい

まずは退避した作業の一覧を確認

git stash list
↓
stash@{0}: WIP on hoge: xxxx // 1回目
stash@{1}: WIP on hogehoge: xxxx // 2回目

// 作業を戻す(例としてstash@{0}を戻す)
git stash apply stash@{0}

以上、stashはとても便利ですね!