【问题标题】:git reset --soft "HEAD^6" what does it means?git reset --soft "HEAD^6" 是什么意思?
【发布时间】:2019-08-30 17:15:52
【问题描述】:

我在本地 repo 上错误地运行了git reset --soft "HEAD^6",之后我运行了git reset --soft "HEAD^"

现在我可以找到 100 多个带有本地更改的文件

git reset --soft "HEAD^6" 是什么意思?

编辑:对于那些会问我为什么这样做的人,这是一个错字。

【问题讨论】:

  • git reset --soft "HEAD^6" 成功了吗?我问是因为HEAD^6 表示HEAD 的第六个父母。它几乎没有机会成为有效的参考,因为与多达 6 个分支合并的章鱼非常罕见。可能是HEAD~6 的错字?
  • @MeladEzzat 你能显示你对命令的输出吗?很抱歉怀疑您的话,但我发现您除了“致命:模棱两可的参数'HEAD ^ 6':未知修订或路径不在工作树中”之外,不太可能有任何其他内容。不是这样吗?
  • @ElpieKay 和 RomainValeri,你是对的,它没有成功,它是“致命的:不明确的参数 'HEAD^6':未知的修订或路径不在工作树中。使用'--'将路径与修订分开,如下所示:"。但我仍然有超过 100 个更改的文件

标签: git git-reset


【解决方案1】:

关于reset --soft

git reset --soft <commitHash> 将移动 HEAD 而不会更改文件的状态 (doc)。

这就是为什么git status 突然看到不同。它现在将您的(未更改的)代码与旧参考进行比较。但是当您执行最后两个操作时,您的文件没有发生变化。


关于参考规范HEAD^6

HEAD^6 将尝试指向HEAD 提交的第六个父级。这在大多数情况下都会失败。也就是说,除非您的HEAD 提交是(至少)6 头章鱼合并的结果。我想我们可以排除这个。


结论

所以第二次操作失败并且是空操作。如果您打算进行第一次重置,那么您就可以开始了!

【讨论】:

    【解决方案2】:

    正如其他人所说,它将 HEAD 更改为第 6 个父母。要返回之前的状态,您可以使用git reset --hard origin/<branch> 重置为您的遥控器。如果您还没有推出更改,请查看git reflog,然后执行git reset --hard <sha>。

    【讨论】:

    • 我也正要添加,但后来我意识到... OP 没有说明第一个 reset 是不需要的,而 第二个 不是t 实际执行。所以此时不​​需要reset。
    【解决方案3】:

    git reset --soft "HEAD^6" 将最后 6 次提交恢复到工作目录。 如果您的更改被推送到远程,您可以通过git reset --hard origin/<<branch>>返回到以前的状态

    【讨论】:

    • 您是否将HEAD^6 与HEAD~6 混淆了?后者将指向 6 个提交,但不是前者。
    • @RomainValeri 为你解释stackoverflow.com/questions/2221658/…
    • “对我的解释”?!我已经在我的回答中准确地解释了它,然后我在我的评论中向 you 重复了这个想法,即使如此,你也没有 not 应用你在此处链接的内容。我很困惑,我错过了什么?
    猜你喜欢
    • 2014-08-25
    • 2021-10-28
    • 2012-06-09
    • 2011-01-02
    • 2021-10-22
    • 2021-07-04
    • 2014-06-08
    • 2013-03-04
    相关资源
    最近更新 更多