git恢复删除后没有提交的删除文件

我删除了一些文件。

我还没有提交。

我想重置我的工作区来恢复文件。

我做了一个git checkout .

但删除的文件仍然丢失。

git status显示:

 # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # deleted: cc.properties # deleted: store/README # deleted: store/cc.properties # 

为什么不git checkout . 将工作区重置为HEAD

输出告诉你你需要做什么。 git reset HEAD cc.properties

这将取消企业运营。 之后,再次运行git status会告诉你,你需要做一个git checkout -- cc.properties来取回文件。

更新:我有这个在我的configuration文件

 $ git config alias.unstage reset HEAD 

我通常用来取消东西。

你已经进行了删除,所以你需要做的:

 git checkout HEAD cc.properties store/README store/cc.properties 

git checkout . 只从删除已经上演的索引中检出。

只要做git checkout path/to/file-I-want-to-bring-back.txt

要一次性恢复所有非暂存的删除操作,不需要指定每个单独的path:

 git ls-files -d | xargs git checkout -- 

要一次性恢复所有分阶段删除,不需要指定每个单独的path:

 git status | grep 'deleted:' | awk '{print $2}' | xargs git checkout -- 

既然你在做一个git checkout . ,它看起来像你试图恢复你的分支回到最后一个提交状态。

你可以用git reset HEAD --hard来达到这个目的

警告

这样做可能会删除所有最新的修改,并取消修改,例如,您可能会失去工作。 这可能是你想要的,但检查文件 ,以确保。

这是帮助我在我的Mac上的命令。 我尝试了一些其他的解决scheme,但他们没有为我工作。

GX版本在OSX Mavericks上

 mac-pro:main chris$ git version git version 1.8.5.2 (Apple Git-48) 

命令

 git checkout HEAD -- path/to/file/file.cc 

如果你使用过

 git rm filename 

然后删除一个文件

 git checkout path/to/filename 

不起作用,所以在这种情况下

 git checkout HEAD^ filename 

应该pipe用

 git checkout HEAD -- client/src/pp_web/index.cljs 

如果你想一次恢复所有的文件

请记住使用这段时间,因为它告诉git抓取所有的文件。

这个命令将重置头部并取消所有的变化:

 $ git reset HEAD . 

然后运行这个来恢复所有的文件:

 $ git checkout . 

然后做一个混帐状态,你会得到:

 $ git status On branch master Your branch is up-to-date with 'origin/master'. 

如果你没有提交任何修改,你只需要保存这些修改,你就可以回到最后一次工作提交。

 git stash git stash clear git clean 

find这个职位,同时寻找如何解除从另一个分支合并后删除我的工作目录中删除的文件的答案。 合并后还没有提交。 由于这是一个合并进行中,我不能只加回来使用:

 $ git reset <commitid#-where-file.cpp-existed> file.cpp 

除了重置文件之外,我还需要做另外一步:

 $ git checkout -- file.cpp 

你能看到这个吗?

这适用于你使用的情况

 git checkout -- . 

在提交之前。

您可能还想摆脱尚未创build的创build文件。 而你不想要他们。 带有:

 git reset -- . 

如果您已经安装了ToroiseGIT,那么只需select“恢复…”菜单项作为父文件夹popup菜单。

如果你正在寻找一个删除的目录。

  git checkout ./pathToDir/* 

对我来说,有什么工作是git checkout {SHA1 of commit with version to restore} "{path to file to restore}"

例如git checkout 5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"

(在我们希望文件进入的分支中执行)

该命令执行后,恢复的文件将存在于原始位置(这将需要被称为)

我有同样的问题,但没有上述解决scheme为我工作。 我最终做的是:
– 用相同的名称创build一个空文件
– 比较这个文件和它的本地历史
– 将历史logging复制到空文件。

1.find您想要使用的特定提交:

  git log This command will give you a list of commits done by you . 

2.使用以下命令恢复该提交:

  git revert <commit id> 

现在你本地的分支会有特别的所有文件

我也意外删除了所有的文件,并使用以下命令进行恢复:

 $ git config alias.unstage $ git checkout HEAD^ *