4

我有一种不好的感觉,我的工作丢失了。有没有办法让他们回来?

这是我所做的要点:

# 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在此之前我没有在其上运行任何命令。

4

2 回答 2

4

您可以轻松恢复丢失的存储(您可以在屏幕上查看其修订版)。但这没有用。

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

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

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

于 2012-07-27T02:26:39.387 回答
0

我本人是“Git stash \ Git stash apply”-man,但这个问题和答案可能会有所帮助。

如何在 Git 中恢复丢失的存储?

于 2012-07-27T02:32:47.020 回答