残念ながら Git の力では救うことはできませんが、Vim の力でなら救えるかもしれません。
ただどちらにせよ以下の設定をしていない場合は無理だと思います (persistent undo は念のため設定しておいて損はないと思います)。
set backup している場合
Vim では :w で書き込む時に以前のファイルの状態をバックアップとして残すことができます。
vim
1set backup
2set backupdir=$HOME/.vimbackup
と書いておけば $HOME/.vimbackup の下にバックアップファイルが保存されていきます (set backup のみの場合は元のファイルと同じディレクトリに保存されます)。
set undofile している場合
Vim は u で undo することができますが、デフォルトで undo できる回数は固定です (undolevels オプションで変更できます)。
Vim には persistent undo といって無限回数 undo できる機能があります。
vim
1set undofile
2set undodir=$HOME/.vimundo
こうするとメモリに収まりきらない undo の履歴は $HOME/.vimundo ディレクトリ以下のファイルに書き出され、適宜読み出し・書き込みされることになります。
上記の設定をしていれば git reset --hard で戻されてしまったファイルを開いて u を押すと、いくらでも以前の状態に戻せます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/30 12:23
2017/12/30 12:29