恢复GIT删除的文件(仅限原始副本)

时间:2013-11-18 23:10:43

标签: git github undelete

我一直在一个项目中工作,为了进行备份,以及将我的测试环境与生产环境同步,我创建了一个GIT存储库(在GitHub中)。

我的生产环境中有很多文件,我不需要,也不想在存储库或测试环境中。但是,当我第一次同步时,我忘了将它们包含在.gitignore文件中。所以我将相应的行添加到.gitignore文件中并删除了测试环境中的文件。

问题是我刚刚与生产环境同步,所有这些文件都被删除了。它们都不是关键文件所以,如果我无法恢复它们就不会有什么问题。有些甚至是垃圾。但是我发现很多这些文件很方便,所以我想只在生产中恢复它们。

(它们不是几个文件,而是几百个文件)


P.S。我仍然需要从存储库中清理一些文件,但这些文件是生产中的关键文件。在没有在生产中删除它们的情况下,在存储库中删除它们的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以备份本地存储库目录,因此将来与生产存储库同步不会有任何影响,因此您可以检索文件。

备份本地存储库后,在支持的目录中发出git log以浏览提交历史记录,并找到已删除这些文件的提交。

实施例

$ git log
commit 7b37eb6bd946b1fcb28549e83d5bb17d9eee8b56
Author: A committer <committer@somewhere.com>
Date:   Wed Nov 20 21:56:09 2013 -0200

    This commit was one after the commit in which files were deleted.

commit fe14476246c235e674b1e741745ed855454c0105
Author: A committer <committer@somewhere.com>
Date:   Wed Nov 20 21:55:18 2013 -0200

    In this commit files were _deleted_.

然后发出git revert [commit number which deleted files](即git revert fe1447)并恢复已删除文件的提交,这些文件将会恢复。

关于git的一个有趣的教程是http://www-cs-students.stanford.edu/~blynn/gitmagic/,没有太多的阅读和充满好的例子。

答案 1 :(得分:0)

如果提交abcdef是您删除这些文件并将其添加到.gitignore的文件,则可以像上次提交时那样恢复文件(请注意^表示该提交的父级:

git checkout abcdef^ -- path/to/removed/file path/to/another/removed/file ...

如果您接下来执行git status,您将暂停提交刚刚恢复的文件(作为新文件)。