我很遗憾我的工作已经失去了。有没有办法让他们回来?
以下是我所做的一切:
# 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
命令。
答案 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” - 我自己,但这个问题和答案应该有所帮助。