Git:恢复一个已经在提交中被删除的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git:恢复一个已经在提交中被删除的文件相关的知识,希望对你有一定的参考价值。

参考技术A 我的博客的源地址,希望大家照顾一下~

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

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

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

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

参考链接

git找回一个已经从远程仓库删除的文件

参考技术A

通过下面这个命令我们可以查看在哪个 commit 中删除了哪些文件。

执行这个命令后效果如下:

比如我想恢复 ic_selected.png 这个文件,我们可以看到删除该文件对应的 commit id : f541888b0e7255cc6aa22a277f3dd9fe5502e5e2

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

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

执行该命令后的效果

可以看到,执行完我们已经恢复了我们需要的文件。

以上是关于Git:恢复一个已经在提交中被删除的文件的主要内容,如果未能解决你的问题,请参考以下文章

git 恢复一个被删除的文件,本地已经删除很久了,而且不知道commit_id ,只记得文件名

Git中添加但未提交的已删除文件可以恢复吗? [复制]

Git学习之路- 撤销操作删除文件和恢复文件

Git学习之路- 撤销操作删除文件和恢复文件

文件移除 git 版本库但不删除文件

Git revert 删除不应该删除的文件