这里要研究的问题是,如果我们在之前的某一个提交中删除了一个文件,如何使用git将此文件恢复出来。

首先我们要做的是找到当时删除的这个文件对应的提交。比较简便的方法是使用一些图形化的Git软件,可以直接浏览找到对应的提交。这些软件包括SourceTree,Github Desktop等。纯命令行的环境可以使用如下的命令:

1
git log --diff-filter=D --summary

在找到对应的提交后,使用如下命令:

1
git checkout $commit~1 path/to/file.ext

注意一下,这里的$commit指的是对应的commit id。后面的~n是git的一种语法,表明追溯某个提交的第n个祖先。详情可以参考Git Treeishes Considered Awesome。那这里的意思就是检出删除这个文件的提交的上一个提交(届时那个文件还存在)中的对应文件。

参考链接