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

Im a "Git stash \ Git stash apply"-私自身ですが、この質問と回答はおそらく役立つはずです。

Gitでドロップされた隠し場所を回復する方法は?

于 2012-07-27T02:32:47.020 に答える