Git重置--hard出错: 无法解析对象。

31

这不是我第一次在我的repo上做硬重置,但这一次出错了。我正在开发一个iOS项目。我是从终端进行重置操作的。我该如何解决致命错误?

fatal: Could not parse object 'e88056ac5d58fb0bbd23d3fe929eac01712d964'

你确切地运行了什么命令?只是 git reset --hard 吗? - jub0bs
1
你最初采取了哪些步骤导致你的代码库处于不稳定状态? - merlin2011
只需要运行 git reset --hard 命令即可。我是唯一在我的代码库上工作的人,但我使用两台电脑。有一段时间我没有使用其中一台电脑,所以我知道它上面的任何内容都已经过时了。就这样。 - learner
git cat-file -t e88056ac5d58fb0bbd23d3fe929eac01712d964git rev-parse HEADgit ls-tree HEAD分别返回什么? - jub0bs
你尝试过使用git gc来清理git仓库吗? - palazzo train
9个回答

14

我有相同的问题并已解决。

当Git仓库发生强制推送等变更时,Gemfile引用的gem可能会出现此问题。

解决方法是在Gemfile中注释掉该gem行,运行bundle命令,然后取消注释并再次运行bundle。这样,Gemfile.lock将引用有效的git修订版本。

此链接来源:https://semaphoreci.com/docs/fail-could-not-parse-object.html


12

对我来说,问题在于我需要在本地机器上拉取我分支的最新版本、合并并提交。然后在我运行命令的服务器上,git reset --hard {hash}才能正常工作。


你是指 git reset --hard {hash} 吗? - Solomon Ucko
@SolomonUcko 谢谢!我已经修复了。 - Justin

11

尝试使用以下命令更新您的本地代码库:

git fetch

2

我曾遇到同样的问题,我用以下方法解决了它:

$ git remote add origin <repo_link>
$ git fetch
$ git reset --hard <commit_id>

2
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community
傻傻的愚蠢机器人 - undefined

2
如果您使用了git浅克隆(使用命令:git clone --depth=1 git@github.com:foo/bar.git),那么可能会出现问题。
请尝试以下步骤:
git fetch --unshallow

然后 git reset 可能会起作用。
参考:

2
Git告诉你的是在仓库中找不到提交的SHA,所以你需要做以下两件事之一:
  1. 像其他答案建议的那样获取最新版本的仓库,或者
  2. 仔细检查你是否在正确的本地文件夹中
也许这里的每个人都比我聪明,但我花了一些时间才意识到我甚至没有进入正确的git文件夹...

1
对我来说,这是由于远程git仓库合并分支引起的,所以你需要找到合并后的新commit_id,然后再试一次。

1

首先更新外部分支 git remote update 然后 git reset --hard


2
欢迎来到Stack Overflow。当回答一个已有五个答案的五年前的问题时,指出你的答案解决了问题中的哪个新方面是非常有帮助的。 - Jason Aller

1
也许你应该先将代码推送到远程目录,然后再执行命令。
git reset --hard <commit_id>

终于这个 bug 将被修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接