読者です 読者をやめる 読者になる 読者になる

【git】git stash していた新規ファイル、削除しちゃった......が、復元できるっっ!!!

ネ申様。。。。本当にありがとう。



こんなことしてしまったとき、、、

$ git stash pop stash@{0}
# On branch xxxxx
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# new file: iranai.file
# new file: iru.file
# new file: iru.file
#
# Changes not staged for commit:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
# (commit or discard the untracked or modified content in submodules)
Dropped stash@{0} (hogehogehogehogehogehoge)

作業途中のファイルだから、とりあえずunstageしよう・

$ git reset

あ、iran.fileファイルがあるやん。消さないと。

$ git rm iru.file

/(^o^)\
/(^o^)\
/(^o^)\
/(^o^)\
/(^o^)\

復活方法

$  git fsck | awk '/dangling commit/ {print $3}'
Checking object directories: 100% (256/256), done.
Checking objects: 100% (321476/321476), done.
Checking connectivity: 322177, done.
683b929acd120359f647c40f4c111abf8afd9669
2d4f3243b63e3850ce094e5cc1958674caae6ba4
b4780256069555fe2c027fba569d255acf01bddb
4ba45267c8ea8d4e52de4cd50a8d4d329baab119
c2aee2136dc0fc45bb72f16284fb0cd43760238c
7f54a3c3fe406bec658325965002dcb1a431d1ca
5ac9d3a462b952a2bdd3f8b66aa5ce49245391ce
78b05450afa5636ffe0e95e79022ac4cba440021
8cc054c395a3d0b8b6e257e5391859fa0bf657aa
2a9705d18da61ff35e81f9ffb24f966132e66c2e
ce0ee6b035524af64b55fce4f9c5e7ace1d950a2
7205f7e984eb6fd758a402c749f0b7ac1415d14b
ff3667523b83c83ee95ae61def5de6cb212d8c0b
3b6e596f544add33f9ab9b949f2d4cdd656497c3
.......

以下で、hash値渡して一つひとつ内容確認し、もう一度復活させたいファイルがあるhash値を探す

$ git show --summary 683b929acd120359f647c40f4c111abf8afd9669
commit 683b929acd120359f647c40f4c111abf8afd9669
Merge: 57a40da c0aefb3
Author: mokokko
Date: Wed Dec 18 14:00:35 2013 +0900

On master: debug


$ git show --summary 2d4f3243b63e3850ce094e5cc1958674caae6ba4
commit 2d4f3243b63e3850ce094e5cc1958674caae6ba4
Author: mokokko
Date: Thu Nov 7 17:14:18 2013 +0900

Fcgi エラーlog にuser_id 追加した別logの実装

$ git show --summary b4780256069555fe2c027fba569d255acf01bddb
commit b4780256069555fe2c027fba569d255acf01bddb
Merge: b64c78b 40eeb4a
Author: Momoko Asai
Date: Fri Dec 27 13:19:48 2013 +0900

On develop: iru
↑ あ、これだ!!!

見つけたらそれをcherry-pick!!

$ git cherry-pick -n -m1 b4780256069555fe2c027fba569d255acf01bddb

これでb4780256069555fe2c027fba569d255acf01bddbでstashされていたfileたちが取得できます。

注意: git gcしていると git fsckができない