commit 前のファイルを git stash で上書きしてしまった!どうする?(自分用メモ)

要約
git stash pop が使えないか検討しよう.

背景
共同作業しているプロジェクトで,「どれどれ,最近の他の人の作業どうなってるかな」という軽い気持ちで git pull したあなたは pull が失敗することに気づいた.「よくわかんねえな」と呟いたあなたはさらに何気なくgit stash してしまう.とりあえずチームの作業を確認したあなたは,作業中だったエディタに向かった.そして異変に気づく:「あれ…このファイル,前回の commit の状態に戻されてるぞ.」そう,あなたが前回の commit から数日間の間に行った大量の変更は消し去られ,数日前の状態に戻ってしまったのだ.

対処
“stash”というのは,何かをこっそり隠すだとか取り除けておく,というような意味合いの言葉です.
その名前が示唆するように,git stash したとき,先程まで保存されていたファイルは(保存されていなかったとしたら流石にアウトだと思うので,エディタが自動的に保存しているバックアップなどを探すしかないでしょう)どこかに置かれています.

最後の stash で退避したファイルを戻すには git stash pop すれば良いようです.

習慣による回避
このような回復手段が git に備わっていることは大変素晴らしいことですが,驚いたり焦ったりすると利用可能な思考のリソースが削がれてもったいないので,日頃から些細な変更のあとにも躊躇なく commit するといいんだろうな~.

時間があるときに調べて書き足すこと
git stash list とかしたときに幾つか stash の結果が出てくるけど,0が一番新しいやつなのか?とかよくわからなかった.stash を複数回やってしまった場合などに回復するためには stash list で得られたリストの時系列をちゃんと知っておくべき.

広告
コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。