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

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

请帮助!

我做了什么:

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

结果:我的所有修复都消失了! 我修复了3个非常困难的bug,它全部消失了!


编辑:

谢谢你们。 我使用了大部分建议,仍然需要重做几件事情,但现在全部恢复。 没有更多的完美主义,我吸取了教训!


(来自:从git reset恢复--hard?)

一般情况下,您无法取回未提交的更改,因此这里真正的答案是:查看备份。 也许你的编辑器/ IDE存储在/ tmp或C: TEMP 下的临时拷贝以及类似的东西[1]。

git reset HEAD@{1}

这将恢复到之前的头部 - 以防你早些时候做出了某些事情

[1]

  • vim eg可选择存储持久性撤消,
  • eclipse IDE存储本地历史 ;
  • 这些功能可能会节省您的**


    有很多情况下你可以恢复你的文件:

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


  • 如果您确实在本地提交了这些错误修正,则可以使用git reflog恢复它们。
    (对于单个文件,你也可以尝试git rev-list
  • 如果你没有提交它们(即它们只在工作树中,而不是回购),它们会从你的本地工作树中消失。
  • 如果您确实将它们添加到索引(但不提交它们),请参阅Mark的答案。
  • 链接地址: http://www.djcxy.com/p/4019.html

    上一篇: I've just deleted one week of work! How to undo git rm

    下一篇: How can I get things back after git reset