我刚刚删除了一周的工作!如何撤消git rm -r --cached?

时间:2011-10-03 06:10:07

标签: git

我提交了一个错误的文件,所以我想清理它,但不小心我覆盖了目录中的所有文件,并将最后的文件提交给git。

请帮忙!

我做了什么:

git add fileIdidnotwanttoadd
git rm -r --cached .
git reset --hard HEAD

结果:我的所有修复都消失了!我修复了3个非常难的错误,它们都消失了!


编辑:

谢谢大家。我使用了你的大多数建议,仍然需要重做一些东西,但现在都恢复了。没有更多的完美主义,我吸取了教训!

4 个答案:

答案 0 :(得分:14)

(来自:Recover from git reset --hard?

一般无法取回未提交的更改,因此这里真正的答案是:查看备份。 也许您的编辑器/ IDE将临时副本存储在/ tmp 或C:\ TEMP之类的东西。[1]

git reset HEAD@{1}

这将恢复到之前的HEAD - 如果您之前已经提交了某些内容

[1]

  • vim ,例如可选地存储持久性撤消,
  • eclipse IDE存储本地历史;

此类功能可能会保存您的**

答案 1 :(得分:7)

  • 如果您确实在本地提交了这些错误修正,则可以使用 git reflog 恢复它们。
    (对于单个文件,您还可以尝试git rev-list
  • 如果您没有提交它们(即它们只在工作树中,而不是回购站),它们就会从您当地的工作树中消失。
  • 如果您确实将它们添加到索引中(但未提交它们),请参阅Markanswer

答案 2 :(得分:7)

在各种情况下,您可以恢复文件:

  1. 如果您在执行上述命令之前暂存了更改(例如,当git add <file>包含您想要返回的内容时运行<file>)那么应该可以(有点费力地)获取该文件通过关注this method
  2. 如果您创建了包含这些文件的提交,那么您可以通过在reflog中查找提交的对象名称然后基于它创建新分支来返回到该提交。但是,它从上面听起来好像你从未提交过这些文件。
  3. 假设您在处理这些文件时曾经git stash运行,可以通过git stash list或上面的方法1.或2.恢复它们。
  4. 否则,我担心你可能会失去运气。 :(

答案 3 :(得分:0)

我没有发现任何上述解决方案成功。运行

git status

在根目录中,您将看到所有未提交的更改。放弃由

引起的更改
git -rm --cached <files>

你想要使用

git checkout -- *

我希望这有助于缓解压力。