git恢复被删除的文件

寂寞空庭春欲晚,梨花满地不开门。
大多数我们是不知道在何时删除了某个文件,通过下面这个命令我们可以查看在哪个 commit 中删除了哪些文件。
1
git log --diff-filter=D --summary
执行这个命令后效果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
commit 6dcf1e6332e2f0cc10902b995a6efda72b88ebc4
Author: 某某 <lnmput@gmail.com>
Date: Fri Nov 16 17:58:27 2018 +0800

修改页面

delete mode 100644 public/themes/lal/fdssf.php

commit cef7eed4b38360a4f3f6ea70c173654df30c486f
Author: 某某 <lnmput@gmail.com>
Date: Wed Nov 7 17:25:44 2018 +0800

调整代码结构

delete mode 100644 app/Http/Controllers/Homes.php
delete mode 100644 app/Http/Requests/AddressAddRequest.php
delete mode 100644 app/Http/Requests/Web/AddressStoreRequest.php

commit 572110f5deed9d3ff76ccc9a7da75c0e5ed324ce
Author: 某某 <lnmput@gmail.com>
Date: Wed Nov 7 00:04:51 2018 +0800

更新缓存

delete mode 100644 app/Console/Commands/InitCommand.php
比如我想恢复 ic_selected.png 这个文件,我们可以看到删除该文件对应的 commit id :f541888b0e7255cc6aa22a277f3dd9fe5502e5e2。

接下来我们执行下面这个命令

1
git checkout $commit~1 filename

这个命令会检出该 commit 的上一个提交中的文件,因为我们是在该 commit 中删除的文件,所以需要在上一个 commit 才能恢复出文件。

https://www.jianshu.com/p/41ad0dcfd8da