gitで現在の作業内容をクイックセーブする
見えないチカラ: 【翻訳】Gitをボトムアップから理解する
http://keijinsonyaban.blogspot.jp/2011/05/git.html
最後の方にstashの話が書かれていた。
以下、引用。
これはあなたのディレクトリの内容の全て――ワーキングツリーと、index の状態の両方を含む――を取り込み、それらのための blob を Git のリポジトリ中に作成する。tree はそれらの blob を保持し、そして stash コミットはワーキングツリーと index と、あなたが stash をした時の時刻を記録する。
これは良いプラクティスだ。なぜなら、次の日にあなたは git stash apply を使って stash から変更を戻すことになるが、毎日の終わりにはあなたが stash した全ての変更が reflog に存在するからだ。以下は、次の日の朝に作業をするために戻ってきたあと、あなたがやるはずのことだ (WIP はここでは "Work in progress=進行中" を表す):
作業途中の内容をstashに放り込んで、blobを作っておくのは便利そうなので、サブコマンドにしておいた
git-qsave
このファイルに実行権限をつけて、PATHの通っている所に置くと使えるようになる。
インデックスの内容を維持するようにしてあるので、気楽にqsaveできるようにしてある。
使い方
とりあえず、作業してて保存したくなったら $ git qsave しておく。
昔の変更を取り戻したくなったら、下のような方法で探す事ができる。
- stash一覧から探す
$ git stash list
- reflogから探す
$ git reflog show stash
- 詳しくログやコミット内容を見てみる
$ git log stash@{32} # これはいつやった? $ git show stash@{32} # これはどんな内容?
- 探したコミットからブランチを作る
$ git branch restore_stash32 stash@{32}
gitに慣れてなくて、コミット回数が少ない人は1日の終わりにとりあえずqsaveするようにしてみたら便利かも。