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

Tyr*_*yra 21 git

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

请帮忙!

我做了什么:

git add fileIdidnotwanttoadd
git rm -r --cached .
git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

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


编辑:

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

seh*_*ehe 14

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

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

git reset HEAD@{1}
Run Code Online (Sandbox Code Playgroud)

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

[1]

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

这样的功能可能会节省你的**


Von*_*onC 7

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


Mar*_*air 7

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

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

否则,我担心你可能会失败.:(


归档时间:

查看次数:

14176 次

最近记录:

9 年,6 月 前