2

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

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

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

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


PS 我仍然有一些文件需要从存储库中清理,但是这些是生产中的关键文件。在存储库中删除它们而不在生产中删除它们的正确方法是什么?

4

2 回答 2

0

您可以备份本地仓库目录,这样以后与生产仓库同步不会有影响,所以您可以检索文件。

备份本地存储库后,发出git login backed dir 以浏览提交历史记录并找到删除这些文件的提交。

例子

$ 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/,阅读量不大,而且有很多很好的例子。

于 2013-11-19T00:12:33.820 回答
0

如果 commitabcdef是您删除这些文件并将它们添加到的地方.gitignore,您可以恢复文件,就像它们在上一次提交中所做的那样(注意,^这意味着该提交的父级):

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

如果您执行git status下一步,您将暂存(作为新文件)刚刚恢复的文件。

于 2013-11-19T13:51:17.067 回答