【问题标题】:Git Checkout -f to undo all local changes sets back to initial commitGit Checkout -f 撤消所有本地更改设置回初始提交
【发布时间】:2012-02-09 04:52:58
【问题描述】:

我的 Rails 应用程序搞砸了,所以我使用了以下命令:

$ git checkout -f

回到我之前的提交并摆脱我的错误。经过研究,我发现此命令撤消了所有本地更改!现在我的应用程序在 Firefox 中显示项目的初始提交,我似乎无法将其恢复到最新提交并显示我所做的所有工作,以便我可以在浏览器中对其进行测试。我尝试了这篇文章中的三种策略How do I undo a checkout in git?

$ git reset --keep

$ git checkout master

$ git reset --hard HEAD

但我看到的应用程序仍然是我第一次启动项目时的样子。当我输入...

git status

终端显示我在分支主机上。运行 git reflog 时,我仍然看到所有提交。如何恢复我的应用程序,以便我真正看到所有本地更改并继续在我的浏览器中测试应用程序?

【问题讨论】:

    标签: ruby-on-rails git


    【解决方案1】:

    很高兴您知道 reflog 是什么以及如何查看它。从 reflog 中选择您要保留的最新提交,然后:

    git reset --hard abc123
    

    abc123 是你想要的提交的 SHA1。这会将master(您当前的分支)更新为提交abc123,以及由此暗示的所有历史记录..

    【讨论】:

    • 它很奇怪......我刚试过这个'$ git reset --hard c13a3d3',我在终端得到的结果是我所期望的'HEAD现在在c13a3d3添加了用户......'这是最新的提交。但是当我在浏览器中访问我的应用程序时,我仍然看到我的项目的一个非常旧的版本。这是一个 git 错误吗?我在 Mac OSX 10.7.2 上使用 git 版本 1.7.4.4。非常感谢您的帮助!
    • 我会首先检查您的 Git 工作目录中的文件是否按照您的预期显示。您看到的问题不太可能是 Git 错误。它更有可能是您忘记执行的某个步骤,而您通常会执行编译/构建/部署/无论您的代码。
    猜你喜欢
    • 2021-09-30
    • 2018-05-01
    • 1970-01-01
    • 2016-12-07
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多