如何使用git pull恢复已删除的文件?

52

我的代码库是最新的。但是我不小心删除了几个文件。现在我想恢复到最新的代码库。请问应该怎么做?

$ git pull origin master

期望从服务器获取所有内容,但收到了“一切都是最新的”的消息。

那么如何使用git pull从服务器获取我的源代码呢?

11个回答

91

你可以将本地分支重置为远程的内容

git reset --hard origin/main

1
因为用户没有在任何地方说明他已经提交了对项目的更改。他可能只是检出了他删除的文件... - Native Coder
3
@NativeCoder,无论他是否提交了更改,对远程跟踪分支进行硬重置将会将工作目录恢复到该状态。具体来说,他说:“我想要一个新的存储库。” - Jeff Puckett
仔细看了一下,OP确实提到了“使用git pull”。在这种情况下,这将是唯一的“正确”答案。抱歉!已经把声望还给你了! - Native Coder
进行硬重置时要小心。它会重置所有内容,包括您的配置。 - Ram
首选方法:git checkout [dir_name] - Teson
显示剩余2条评论

40

文件已经在您的本地 git 历史记录中,因此您无需拉取代码即可将它们恢复。运行

git checkout <file>

关于缺失文件的问题。如果您没有任何未提交的更改,则

git checkout .

在 git 根目录下也可以工作。


5
尽管我的回答获得了大约三倍的赞同票数,但这个回答仍然是我最喜欢的。干杯! - Jeff Puckett

16

这显示了所有已删除的文件。

git ls-files --deleted 

这将恢复已删除的文件。

git checkout <deleted file name with complete path>

4

对于所有未暂存的文件,请使用

git checkout -- .

或更安全的方式

git clean -fd


2
假设他没有犯任何错误。 - everton
这将删除任何已修改的文件。它不仅仅是对已删除文件进行全新的拉取(即使 OP 想要全新恢复……提到这一点很好,因为其他人很容易忽略这个问题)。 - TamusJRoyce

3

这就是您所需要的全部。

git reset --hard
git fetch origin 
git pull origin master

2
不需要从起点获取,如果您将拉下一个。 - everton

1
< p> git status 命令的结果是什么?您还可以尝试使用 git reset --hard origin/master


0

这将恢复所有已删除的文件,因为它们仍然驻留在您的本地存储库中。

git checkout -- .

每当我想重新开始一个我搞砸了的文件,或者只是放弃那些已经在代码库中构建好的文件时,我只需要删除除了.git文件夹之外的所有内容,然后运行此命令就可以回到最初的状态。

0

如果您只是还原更改,那么所有文件都将被删除。这不是一个解决方法(您提到的),需要重置,我认为这比获取新的存储库要好。


0

要从 git pull 中获取已删除的文件,我们可以使用此命令将这些已删除的文件恢复回来

git rev-list -n 1 HEAD

0
尝试一下这个命令。
$ git reflog 

上述命令将为您提供本地代码库中已更新的分支和其他引用的提示,如下所示(最近的更新在顶部)。
da82426 (HEAD -> main) HEAD@{0}: reset: moving to HEAD
da82426 (HEAD -> main) HEAD@{1}: reset: moving to HEAD~
774b952 (origin/master, origin/main) HEAD@{2}: reset: moving to HEAD
774b952 (origin/master, origin/main) HEAD@{3}: checkout: moving from master to main
8851ece (master) HEAD@{4}: checkout: moving from master to master
8851ece (master) HEAD@{5}: commit: First commit
8bd9080 HEAD@{6}: commit (initial): Initialize project using Create React App

然后通过以下命令返回到您想要的阶段
$ git reset --hard 8851ece

它可能会恢复文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接