Git checkout -- 恢复丢失的文件

Git checkout -- recover lost files

我不小心删除了 git 存储库中的本地文件更改。他们没有承诺,甚至没有被推动。

我做了什么: git状态 (然后显示未暂存提交的文件,我不小心删除了这个命令称为 "smdr" 的整个文件夹): git结帐--smdr

然后文件更改消失了。

我怎样才能恢复这些文件(在 git 签出 -- smdr 命令之前恢复所有文件)?

您可以使用任何给定的选项:

Git 引用日志

键入 git reflog 并签出您需要的提交,它会将您的存储库“还原”为“已删除”的提交。

Git 还原

另一种选择是使用 git revert SHA-1 这将还原您的提交。它只会撤消您的更改

Git 重置

Git 重置将检查给定 sha-1 的内容。它会将您的分支设置为与 SHA-1

相同的状态

你不能 Git。这些文件未提交,因此它们不在历史记录中。您刚刚在索引中获得了 git checkout.

的(不存在的)版本

你唯一的希望就是你的备份系统。

除了已接受的答案外,我还发现了我们可以遵循的良好做法,以防止 checkout 事故再次发生。

这对我来说最突出 from this answer.

"Here's another crazy idea: don't run 'git checkout ...' on a dirty work tree. Problem solved."

自从使用 git checkout . 丢弃任何 unstaged/uncommitted 更改后,我就停止了。我现在使用更适合这个的命令:git reset.

git resetgit reset --hard 当您完全确定要永久放弃更改时。 git stash 也是你的朋友,就在你放弃这些更改之前,在你删除之前把它藏起来不会有什么坏处。养成这两个习惯并使用 git checkout 仅用于在分支之间切换(大部分)对我来说非常有效。