我是 git 的新手,直到今天晚上我都很高兴。我一直在定期进行更改。我在 unfuddle 和 beanstalk 上维护两个遥控器以及一个本地文件系统遥控器。
从未出现过错误,经过一天的工作,我将更改推送到所有遥控器,相信这会让我非常安全。没有错误,也没有问题。
今天晚上,我去查看我的项目日志,并得到了这个错误:
error: Could not read a2b6c2fa16e01db9e38d9509606a444e5831330a
fatal: Failed to traverse parents of commit
78e81a9a7f5cafa5e2af4b95d156364b9a430ac9
据我所知,历史可以追溯到 5 月 29 日。我无法从任何遥控器克隆副本。没有任何其他克隆可以用来恢复存储库。我什至不知道它什么时候坏掉的。我检查了常见问题解答,但我不知道存储库恢复部分的作者在说什么。
当我运行 git fsck 时,我得到 155 行 Missing this 和 dangling that 的信息。 显然,我想把这个清理干净。如果我能从那时起直接了解的话,我可以在 5 月 29 日之前没有任何历史记录。
谁能帮我弄清楚这个问题吗?
另外,什么可能导致这种情况?我能想到的唯一发生在那个时期的变化是我将 netbeans 升级到了 v7,它应该有 git 支持,但似乎无法识别现有的存储库。
我用谷歌搜索了这个错误并找到了你的页面,就我而言,问题是我已经完成了:
git clone --depth 1 https://github.com/example/nifty.git
但是几个月后,忘记了我只获取了最新的提交,当我尝试将其推送到另一个遥控器时,它抱怨了。我花了一些时间才发现这不是一个损坏的存储库,而是我从未有过父级提交的事实!希望这对某人有帮助。
这解决了我的问题:
git fetch --unshallow
git branch -D --remote $REMOTE/$BRANCH
您可能可以使用
git show-ref
来查找有问题的分支,但就我而言,我已经提前知道了。