2012-06-25 87 views
11

我正在从SVN转换到GIT,并得到了一个我无法找到答案的问题。 当我通过SVN处理一些开源项目时,我将描述通常情况。从存储库中恢复已删除的文件

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

所有这些与GIT一起工作良好,除了第4页。我试图让“git pull”它说项目是最新的,即使它们从本地文件夹中丢失,我也没有得到原始文件。

使用git时,第4页的正确命令是什么。 THX

+1

可能重复[如何恢复文件到以前的状态在混帐?](http://stackoverflow.com/questions/35284/how-do-i-restore-files-to-previous-states-in-git) –

回答

10

尝试签出当前分支(或HEAD):

git checkout HEAD 

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

git reset --hard 
+0

这两个都没有工作。我删除了一些文件,在我结帐后,它说有些文件有D标志,没有其他的事情发生。如果我重置,它说有一个我不需要的apull请求,并且没有其他事情发生。如果我拉它说文件是最新的,但删除的文件仍然丢失。 – Eugen

+0

对不起,看起来像重置 - 哈德工作正常。 Thx – Eugen

10

最简单的方法在输出git status

git checkout -- file 

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

+0

好,但如果有10个文件我想恢复,我不记得他们的名字怎么办? – Eugen

+0

'git status'会告诉你每个被更改/删除的文件的名字 – madth3

+1

另外如果你删除了一个文件夹,可以说/ src/test,并且假设它下面有许多文件,那么你可以通过简单地运行下面的命令来恢复它们命令:git checkout - src/test – user204069

0

Git在这种情况下是非常糟糕的,我一直在努力争取它,这是令人难以置信的。下面是我做的方式:

  1. 克隆远程回购一些地方在本地HD从 ,你有你的现有本地回购
  2. 复制删除的文件不同/来自新克隆的回购协议目录当地现有的回购
  3. 提交更改到您现有的本地回购,如果需要的话也推到远程回购
  4. 删除新克隆的本地回购

为什么建议立即进行删除d是消费来完成这样一个简单的任务,我想不起来了这个复杂和时间......

0

这是我会做什么:

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

相关问题