ほぼ自分用メモ
次起こさないための戒めとして。
経緯
開発中
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
を駆使して解消したのだけれども、
それより楽に直せる手段が欲しいなあということでちょっと考えてみた結果です。