【问题标题】:How do I undo a checkout in git?如何在 git 中撤消结帐?
【发布时间】:2011-04-05 20:09:14
【问题描述】:

我刚刚从我的本地 git 存储库中检查了一个较早的提交。我没有对其进行任何更改,我只是在看它。现在我想回到我最近的提交 - 我该怎么做?

我用来检查的确切命令:

git checkout e5dff6b3c5d704f9b598de46551355d18235ac08

现在,当我输入 git log 时,在顶部我看到了这个已签出的提交,但我以后的提交都没有。我不小心删除了那些吗?

【问题讨论】:

  • 我认为你看错了:我们结帐到分支(头),而不是单独提交

标签: git


【解决方案1】:

先试试这个:

git checkout master

(如果您在与master 不同的分支上,请改用那里的分支名称。)

如果这不起作用,请尝试...

对于单个文件:

git checkout HEAD /path/to/file

对于整个存储库工作副本:

git reset --hard HEAD

如果这不起作用,那么您可以在 reflog 中查找您的旧头部 SHA 并重置为:

git reflog
git reset --hard <sha from reflog>

HEAD 是一个始终指向当前分支中最新提交的名称。

【讨论】:

  • 但是我如何查看我的提交来决定给它哪个 SHA1 哈希?
  • 你没有 - 你输入HEAD,逐字逐句。 Git 已经知道HEAD 的含义。但是,如果您真的非常想给它一个 SHA1,您可以使用 git log 查看提交日志。
  • 当我运行 git reset --hard HEAD 时,它会让我回到已签出的提交...我将发布我用来签出的确切命令。
  • (如果你好奇,你可以输入git rev-parse HEAD,看看它给了你一个对应于你最新提交的SHA1。)
  • 我在上面添加了两个新选项,请尝试(按顺序 - 先尝试结帐版本)。
【解决方案2】:

要撤消git checkout,请执行git checkout -,类似于shell 中的cdcd -

【讨论】:

  • 您的意思是强调git checkout 没有参数? git checkout - 给出一个错误。
  • git checkout -- . 对我来说效果更好。
【解决方案3】:

您可能想要git checkout mastergit checkout [branchname]

【讨论】:

    【解决方案4】:

    如果您使用的是 github,则默认分支的名称可能不再是 master。请改用git checkout main

    【讨论】:

    • 加油!这个问题是 10 年 9 个月前提出的(在我写这篇评论的时候)。当时的默认分支是master。而且这个问题与签出不存在的分支无关。 :D
    猜你喜欢
    • 1970-01-01
    • 2015-11-25
    • 2010-12-14
    • 2019-08-23
    • 2015-06-05
    • 2014-11-03
    • 2016-06-06
    • 2011-08-14
    相关资源
    最近更新 更多