【问题标题】:Git reset --hard not working as expectedGit reset --hard 没有按预期工作
【发布时间】:2015-03-30 10:44:56
【问题描述】:

我正在尝试检查存储库的历史记录。我停在了我想将存储库返回到特定提交的地方。我搜索了,我做到了

git reset --hard 12345

我收到消息说 HEAD 现在是 12345。我打开文件夹查看我想查看的文件,但它没有改变!

我想回到 2009 年那个文件第一次创建的时候。但是该文件是新版本(在 2010 年编辑后)。

我检查了工作目录,但那里什么也没有。我也跑了

git clean -f -d

但没有任何改变。

我不知道我现在该怎么办。我想回到过去看看文件的样子,但我想回到整个存储库。

【问题讨论】:

  • 欢迎来到 Stack Overflow!您不必使用您的姓名签名,因为它会自动显示在您帖子的右下角。提示:如果您将行缩进 4 个空格,它们将被标记为代码示例。您也可以突出显示代码并单击“代码”按钮(上面带有“{}”)
  • 我“+1”只是因为我喜欢时间旅行。对不起题外话:)

标签: git git-reset


【解决方案1】:

对我来说,我没有 stage 文件,这就是为什么 git reset --hard 不适合我
我刚刚运行了以下命令

git add . => 暂存所有文件(不要忽略.

git reset --hard => 重置所有更改

【讨论】:

    【解决方案2】:

    公平地说,我不明白你的回购发生了什么

    git reset --hard 12345
    

    需要强调的是,你通常应该避免使用“git reset --hard”命令。风险是丢失您拥有的任何未提交的更改,并最终导致悬空提交。如果您想丢弃在提交 12345 之后所做的所有提交,您真的会使用该命令。我邀请您阅读此thread about git reset --hard

    在您的情况下,我实际上会创建一个指向提交 12345 的临时分支“temp_branch”。 该命令将是

    git checkout -b temp_branch 12345
    

    这会将 repo 切换到新分支“temp_branch”,其 HEAD 将为 12345。新分支的创建不是强制性的,但如果我需要从该提交中进行更改,我发现它很方便。

    【讨论】:

    • 我没有做任何更改。我感兴趣的只是调查历史。我真正想要的是在创建提交时从存储库中获取一个副本,并保留它以供以后分析。所以现在,我需要将存储库恢复到其原始状态,并获取当时存储库的副本。
    • 在这种情况下,“git checkout”是最好的选择。它允许你把你的 HEAD 放到正确的提交上。基本上,如果您执行“git checkout commitA”,您的仓库将处于 commitA 的状态(前提是您没有任何正在进行的工作。您可以使用“git status”进行检查)。然后,如果您执行“git checkout commitB”,您的 repo 将处于 commitB 的状态。为了查看您的 HEAD 在哪里,您可以执行“git log --oneline --graph --deco --all “。如果你想回到你的主人所在的地方,你只需要做一个“git checkout master”。
    • 好吧,在我执行“git reset hard”之后,我现在可以知道 repo 发生了什么。情况是我做了“git reset --hard commitA”并提交 A 应该是在 2008 年。但是,我做了 git log 来查看提交历史,我可以看到从 2013 年开始的提交。原始 repo 是从2015. 我想撤消重置操作。
    • 我建议您使用“git reflog”命令来确定在您的 repo 上执行了哪些操作。如果最后一个操作(Head@{0} 是您的“git reset --hard”),那么您想要回到 Head@{1}。在这种情况下,您需要执行“git reset HEAD@{1}”。我邀请你阅读stackoverflow.com/questions/5788037/recover-from-git-reset-hard
    【解决方案3】:

    如果您只想查看提交时的内容,不要使用重置。 reset 用于移动分支,这样你可能会陷入困境。只需检查一下,@ 987654321@。然后你可以再次使用 checkout 回到原来的位置,git checkout master(或任何分支)。

    至于您的文件没有被更改,您是否确定它在该提交中有所不同?请与git diff 12345 branch_name -- filename联系。

    【讨论】:

    • 是的,我确定该文件中有不同的内容。
    猜你喜欢
    • 2018-01-13
    • 2010-11-26
    • 2018-01-15
    • 2017-04-05
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    相关资源
    最近更新 更多