【问题标题】:Restore deleted file from repository从存储库中恢复已删除的文件
【发布时间】:2012-06-27 06:02:52
【问题描述】:

我正在从 SVN 过渡到 GIT,遇到了一个我找不到答案的问题。 我将描述我通过 SVN 处理一些开源项目时的常见场景。

  1. 结帐
  2. 开始处理文件,进行更改,以测试项目的工作方式。
  3. 在 p.2 之后,一些文件被大量修改,我没有机会恢复到原始状态。
  4. 我从磁盘“rm filename.cpp”中删除了修改后的文件,运行命令“svn update”,瞧,所有原始文件都回来了。

除了第 4 页之外,所有这些都可以在 GIT 中正常工作。我尝试制作“git pull”,它表示项目是最新的,即使本地文件夹中缺少原始文件,我也没有得到原始文件。

使用 git 时 p.4 的正确命令是什么。 谢谢

【问题讨论】:

标签: git svn


【解决方案1】:

git status的输出中指出了最简单的方法:

git checkout -- file

file 可以是已删除文件的名称。 这将恢复已删除的文件,而不会影响其他文件。

【讨论】:

  • 好吧,但是如果我要恢复 10 个文件并且我不记得它们的名称怎么办?
  • git status 会告诉您每个更改/删除文件的名称
  • 另外,如果你删除了一个文件夹,比如说 /src/test,假设它下面有很多文件,你可以通过简单地运行以下命令来恢复它们: git checkout -- src/test
【解决方案2】:

尝试检查当前分支(或HEAD):

git checkout HEAD

或者如果您想将所有内容恢复到上次提交的状态(警告:这将永久删除所有未提交的更改!),您也可以硬重置:

git reset --hard

【讨论】:

  • 这些都不起作用。我删除了一些文件,在我结帐后它说有些文件有 D 标志,没有其他任何事情发生。如果我确实重置,它说有一个我不需要的拉取请求,并且没有其他任何事情发生。如果我拉它说文件是最新的,但删除的文件仍然丢失。
  • 感谢朋友,您的帮助挽救了我的一天!
【解决方案3】:

这就是我会做的:

git reset HEAD <file-path> git checkout -- <file-path>

【讨论】:

    【解决方案4】:

    在这种情况下,Git 很糟糕,我一直在为此苦苦挣扎,以至于难以置信。这是我的做法:

    1. 将远程存储库克隆到本地 HD 上的某个位置,而不是 您现有的本地仓库在哪里
    2. 将已删除的文件/目录从新克隆的仓库复制到现有的本地仓库
    3. 将更改提交到您现有的本地存储库,如果需要也推送到远程存储库
    4. 删除新克隆的本地仓库

    为什么完成如此简单的任务会如此复杂和耗时,这让我无法理解......

    【讨论】:

    • 现在,git zen:认为你只有本地仓库,没有遥控器。并且您希望检索文件...
    猜你喜欢
    • 1970-01-01
    • 2013-08-24
    • 2015-09-01
    • 2014-07-29
    • 2020-10-19
    • 2012-03-04
    • 1970-01-01
    • 2018-07-28
    相关资源
    最近更新 更多