git stash:我的目录中的文件去了哪里?

时间:2012-07-27 01:55:21

标签: git git-stash

我很遗憾我的工作已经失去了。有没有办法让他们回来?

以下是我所做的一切:

# Initially
$ git init -q
$ echo foo >foo
$ git add foo
$ git commit -m initial
[master (root-commit) 399ac4f] initial
 1 file changed, 1 insertion(+)
 create mode 100644 foo

# Work work work
$ rm foo
$ mkdir foo && echo bar >foo/bar

# This is where things went bad
$ git stash
Saved working directory and index state WIP on master: 399ac4f initial
HEAD is now at 399ac4f initial
$ git stash pop
Removing foo
# On branch master
# ...
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (c8353a2223b73ceb9aa73fac64829919b68c86e9)

# What happened to my work!?
$ find foo
find: foo: No such file or directory

$ git --version
git version 1.7.11.3

不幸的是,我认为foo/bar没有看到存储库/索引,因为在此之前我没有运行任何git命令。

2 个答案:

答案 0 :(得分:4)

您可以轻松恢复丢失的藏匿物(您可以在屏幕上看到其修订版)。但是没用。

git stash不会保存新文件(在您的情况下为foo /目录内容),但在退出之前它会git reset --hard。这将恢复有效删除foo/

的工作目录

我建议使用某种已删除的文件恢复工具。

P.S。发送了一封关于此的电子邮件到git邮件列表。他们说这是一个错误,因为git stash旨在成为一个安全的命令。但是现在只需使用git stash -u。这样git就会将所有(甚至未跟踪的)文件保存到存储中

答案 1 :(得分:0)

我是一个“Git stash \ Git stash apply” - 我自己,但这个问题和答案应该有所帮助。

How to recover a dropped stash in Git?