gitで作業を一時中断して別ブランチに移りたいときに使えるコマンド
1. git stashを使う方法
stash: こっそりしまう、隠す、蓄える
基本
git stashコマンドを使うと作業中の変更を一時保存することができます。
$ git stash
Saved working directory and index state WIP on master: ***
$ git status
On branch master
nothing to commit, working tree clean
保存した変更を戻したいときは git stash pop
コマンドを使用します。
$ git stash Saved working directory and index state WIP on master: *** $ git status On branch master nothing to commit, working tree clean $ git stash pop On branch master Changes not staged for commit: modified: new.txt
未追跡ファイルを保存する
git stash
はそのままでは未追跡のファイルを保存しません。
$ git status On branch master Untracked files: new.txt $ git stash No local changes to save
未追跡ファイルを保存するにはあらかじめstageしておくか、
$ git stage new.txt $ git stash Saved working directory and index state WIP on master: ***
-u
オプション(または--include-untracked
)をつけて実行します。
$ git stash -u
Saved working directory and index state WIP on master: ***
2. コミットした変更を戻す方法
自分は普段こちらを使っています。 ただし戻し忘れると一時保存のつもりの変更がコミットログに残ってしまう欠点はあります。
一時保存したい変更をとりあえず適当なメッセージでコミットしておいて、git reset HEAD^
コマンドで戻します。
$ git commit -m "wip" $ git reset HEAD^ $ git status On branch master Untracked files: new.txt
いちいち打つのは面倒なので.bashrcにundoという名前でコマンドエイリアスを使って気軽に運用しています。
alias undo="git reset HEAD^"