Git-在本地删除了一些文件,如何从远程存储库中获取它们


109

我已经删除了PC上的一些文件,如何重新下载?

Pull说:“已经是最新的”。


1
您不必“再次下载它们”,因为使用Git时所有存储库历史记录都在本地存在。
cdhowie 2010年

您知道如何从本地获取它们吗?
查理·帕克

Answers:


162

由于git是分布式VCS,因此您的本地存储库包含所有信息。无需下载;您只需要从指尖提取所需的内容即可。

如果您尚未提交删除,则只需从当前提交中检出文件即可:

git checkout HEAD <path>

如果已提交删除,则需要从具有文件的提交中检出文件。大概是上一次提交:

git checkout HEAD^ <path>

但是如果是n以前提交的,请使用HEAD~n,或简单地启动gitk,找到适当提交的SHA1,然后将其粘贴。


2
就像旁注一样,它也适用于完整目录,它对于单个文件不是特殊的或特定的(至少在我尝试过时有效)。顺便说一句。
查理·帕克

5
注意<path>,即使仅.是当前目录的点,它也是必需的。但是“分支”(HEAD在上面的示例中)是可选的。与许多Git命令一样,输出和帮助都无济于事。
MarkHu '17

39

git checkout filename

git reset --hard 可能也可以解决问题


9
警告通过使用该git reset --hard方法,因为那样会将整棵树恢复到放置HEAD / HEAD ^ /
HEAD〜n的

git checkout filename是我的答案:)
Ruub 2016年

git checkout filename仅创建一个空文件
mrek

放置在所需的文件夹中,并确实git checkount .像一个魅力!
hzitoun

21

如果您在本地删除了多个文件但未提交,则可以强制签出

$ git checkout -f HEAD

从输出“已经是最新的”中可以看到,提出这个问题的人最近没有做任何事情。您是否应该指定git checkout -f HEAD危险?因为这可能会撤消未提交的本地更改(恢复以前的文件是肯定的结果,丢失已编辑文件的更改是否定的)。
莱昂内尔·特里布雄

15

如果您在本地删除了多个文件并且没有提交更改,请转到本地存储库路径,打开git shell并键入。

$ git checkout HEAD .

最后一次提交之前的所有已删除文件将被恢复。

添加“。” 将当前存储库中所有已删除的文件恢复到各自的路径。

有关更多详细信息,请查阅文档


2

您需要从中签出以前的版本,然后再删除文件。尝试git checkout HEAD^签出最近的修订。


0

另外,我添加了以下步骤,以便git repo将与IDE正确链接:

 $ git reset <commit #>

 $ git checkout <file/path>

我希望这可以帮到你!!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.