如何撤消 Git 中的签出?

How to undo checkout in Git?

我刚刚在 Git 上犯了一个大错误,恐怕我刚刚失去了 2 天的工作,我希望你们中的一个人能够帮助我撤消这个错误!

我是Git的新手,所以我一直在网上寻找如何做某些事情,几天前我用网络界面创建了一个新的分支,因为我已经工作了没有提交或推送(或检查所述分支),因为今天我认为是时候推送我的工作了,所以我做了以下事情;

git add .

git commit -m "these changes were awesome"

然后在 git 推送之前,我想 "I really should put this on a new branch" 在 "how to change branch" 上快速 Google 搜索 "git checkout"... "ok great!" 我想,就像猿猴一样,我毫不犹豫地做到了,看到我在 VS Code 中的文件结构发生了巨大的变化……然后我意识到我已经失去了一切。

有希望 Git 将这些删除的文件存储在任何地方吗?有没有希望我可以找回这些文件而不必跳出我的 window?

您添加了所有文件,然后提交了它们,听起来它们已安全地存储在您的分支上。您如何与 git(例如 shell、git 扩展等)互动?

运行 "git branch" 如果您在控制台中。你看到了什么? 如果在 git 个扩展或类似的扩展中,您看到了哪些分支/提交?

如果您切换了分支,您应该能够签出之前的分支以查看您提交的工作。否则(如果在当前分支上)如果您在上一个日志中看到您的提交("git log" 命令),请仔细重置或隐藏当前分支上的更改。

我已将@Daniiel Mohr 的回答标记为正确,因为他帮助我到达了那里,但我将post 在这里使用我对处于我的位置的其他人使用的确切步骤,

git reflog

这会为您提供一个包含最近 activity 的日志,在这样的列表中查找您的提交:

f2ff96e HEAD@{3}: checkout: moving from multi_content_support to dynamic-contents
b6ebc14 HEAD@{4}: commit: FixedContainer and MutableContainer added with dynamic support, Image, Label, Button and TextInputField upgraded to dynamic

找到你提交的id,在我的例子中"b6ebc14"

然后用git重置你的id:

git reset --hard b6ebc14

瞧瞧,git 会好心地阻止你的焦虑发作 ;)

祝你好运!