执行 find .git/objects -type f | xargs ls -lt | sed 60q ,这里60q 的意思是最近60次的add,然后会出来:
$ find .git/objects -type f | xargs ls -lt | sed 60q
-r—r—r— 1 Y Administ 222 Feb 3 21:00 .git/objects/02/18fb7591
36a0ee550d2e4d179f01bd75af48a0
-r—r—r— 1 Y Administ 176 Feb 3 21:00 .git/objects/5c/cb94ce63
fd5196db10dffa6bab149c8b30546e
-r—r—r— 1 Y Administ 77 Feb 3 21:00 .git/objects/d5/177a8da3
96b5d6450d2c8e6ecf2f3ad8e41cd2
-r—r—r— 1 Y Administ 1387 Feb 3 21:00 .git/objects/e0/7e9099c0
b27a4dd1a432db0bbf2112ca544ebd
-r—r—r— 1 Y Administ 5480 Feb 3 20:38 .git/objects/74/ea02bfa7
353be6095959503abdd7dc0a178f53
-r—r—r— 1 Y Administ 2701 Feb 3 20:38 .git/objects/7a/d366bac4
91f6793d9b7da0cc3e7fb5ba26d403
-r—r—r— 1 Y Administ 2597 Feb 3 20:38 .git/objects/a7/9c139160
fa387b365629ead63f5818177d2e48
此处仅仅截取一部分信息,然后就是恢复了。
使用 git cat-file -p ID > a.md ,解释一下这个命令,就是将ID所示的文件读取出来重定向保存到 a.md 文件内,ID是objects后面的一串东西,比如第一个就是 0218fb759136a0ee550d2e4d179f01bd75af48a0 。(PS:需要将之间的/ 去掉)。恢复的文件就在项目目录里a.md中,这样缓存区的文件就回来了,至于连add都没有的同学。。