LoginSignup
1
2

More than 5 years have passed since last update.

Git stash でバック・トゥ・ザ・フューチャーした話

Posted at

ほぼ自分用メモ
次起こさないための戒めとして。

経緯

開発中

git stashして過去のソースを確認した

git stash popで未来に帰る

うっかりCtrl+zでUndoしてしまったので、Ctrl+yでRedoすることに

が、しかしエディタの設定上、Ctrl+yは1行削除になっているため・・・

歴史
実装 ⇒ stash ⇒ pop
↓ Ctrl+z
実装 ⇒ stash(⇒ pop)
↓ Ctrl+y
実装 ⇒ stash ⇒ Ctrl+y

お分かりいただけただろうか・・・

popの内容がそのまま消し飛んでしまったのである。

こりゃヘビーだ。

Ctrl+z連打で実装の部分をメモリから呼び起こせればよいのだが、
戻る確証が無い&量が多かったためコマンドで解決することに。

コマンド

コンソール上にstashのhashが残っていたので、それを利用

まずは、stashの内容をmerge
git merge f846a79320cc54b348645a515dd158fc15a3569a

mergeされているか確認
git log

commit f846a79320cc54b348645a515dd158fc15a3569a
Merge: 1370998 816884a
Author: momiji <hogehoge@fugafuga.piyo>
Date:   Thu Nov 16 14:37:37 2017 +0900

    WIP on hoge_branch: 1370998 イケてるcommitコメント

commit 816884ad654f564651b65165165c164a6487aaf7
Author: momiji <hogehoge@fugafuga.piyo>
Date:   Thu Nov 16 14:37:36 2017 +0900

    index on hoge_branch: 1370998 イケてるcommitコメント

commit 1370998ea849845f64d8465ee156184b4654f848
Author: momiji <hogehoge@fugafuga.piyo>
Date:   Thu Nov 16 10:20:24 2017 +0900

    イケてるcommitコメント

このままでは余計なものがcommitとして残されてしまうので、時間を逆戻し
git reset HEAD^ --soft * 2

巻き戻せたか確認
git status

$ git status
On branch hoge_branch
Your branch is up-to-date with 'origin/hoge_branch'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   apl/html/hoge/fuga/piyopiyo.html

万事解決
歴史に傷がつくことも無く元通りになりましたとさ。

前にも似たようなことをやらかしたときはgit reflogを駆使して解消したのだけれども、
それより楽に直せる手段が欲しいなあということでちょっと考えてみた結果です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2