git recover删除的文件,删除后没有提交


git recover deleted file where no commit was made after the delete

我删除了一些文件。

我还没有承诺。

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

我做了一个git checkout .

但删除的文件仍然丢失。

git status显示:

1
2
3
4
5
6
7
8
# 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

这将使RM操作不稳定。之后,再次运行git status会告诉您需要执行git checkout -- cc.properties才能取回文件。

更新:我的配置文件中有这个

1
2
$ git config alias.unstage
reset HEAD

我通常用来拆东西。


您已经进行了删除操作,因此需要执行以下操作:

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

git checkout .仅从已进行删除的索引中签出。


就这么做吧。


要一次恢复所有未分页的删除,请自动恢复,而不指定每个路径:

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

要一次恢复所有分段删除,请自动恢复,而不指定每个路径:

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


因为您正在执行git checkout .,所以看起来您正在尝试将分支恢复到最后一个提交状态。

你可以用git reset HEAD --hard来实现这一点。

警告

这样做可能会删除所有最新的修改并取消对修改的标记,例如,您可能会丢失工作。这可能是你想要的,但请查看文档以确保。


如果你用过

1
git rm filename

然后删除一个文件

1
git checkout path/to/filename

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

1
git checkout HEAD^ path/to/filename

应该工作


这是在Mac上帮助我的命令。我尝试了其他一些解决方案,但它们不适用于我。

OSX Mavericks上的Git版本

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

命令

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

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

如果要一次还原所有文件

记住使用句点,因为它告诉Git获取所有文件。

此命令将重置头部并取消所有更改:

1
$ git reset HEAD .

然后运行此命令还原所有文件:

1
$ git checkout .

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

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


使用git ls-files签出删除的(-d)或修改的(-m)文件。

1
git checkout $(git ls-files -d)

看看如何只还原git签出时修改过的文件?


你能看看这个吗

这适用于你用过的箱子

1
git checkout -- .

在你做出决定之前。

您还可能希望删除尚未创建的已创建文件。你不想要它们。用:

1
git reset -- .


在查找有关如何取消删除从其他分支合并后在我的工作目录中删除的文件的答案时找到了此文章。合并后尚未提交。因为它是一个正在进行的合并,所以我不能用以下方法将其添加回去:

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

除了重置之外,我还必须执行另一个步骤,以使文件返回:

1
$ git checkout -- file.cpp

如果您没有提交任何更改,您所要做的就是保存这些更改,然后您将返回到上一次工作提交。

1
2
3
git stash
git stash clear
git clean


如果要查找已删除的目录。

1
 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"

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

执行该命令后,还原的文件将存在于原始位置(需要将其放入)


您可以重置工作区(并恢复已删除的文件)

1
git checkout ./*

注意:先做你想保留的工作。


如果已安装ToLoiseGit,则只需选择父文件夹弹出菜单的"还原…"菜单项。


我也有同样的问题,但是上面的所有解决方案都不适合我。我最后做的是:-创建同名的空文件-将此文件与其本地历史记录进行比较-将历史记录复制到空文件中。


1.使用以下方法查找要还原的特定提交:

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

2.使用以下方法恢复提交:

1
    git revert <commit id>

现在,您的本地分支将拥有所有文件,尤其是