34

在最后一次合并到我的 Git 存储库的主分支后,我失去了克隆存储库的能力。

克隆到测试存储库...
远程:计数对象:126084,完成。
远程:压缩对象:100% (28327/28327),完成。
接收对象:100% (126084/126084), 132.63 MiB | 29.30 MiB/s,完成。
远程:总计 126084(增量 96101),重复使用 126078(增量 96095)
解决增量:100% (96101/96101),完成。
错误:refs/remotes/origin/master 未指向有效对象!
错误:尝试使用 ref refs/heads/master 编写
       不存在的对象 951aca8051823b2f202d30c9cb05401ef17618c6

存储库托管工具 Fisheye 报告:

无法从远程存储库获取:
/var/atlassian/application-data/fisheye/managed-repos/MYREPONAME.git
错误:无法找到 0d998c99b6d01e8aabca72b1934802acf90b8fc9,
致命:找不到对象 0d998c99b6d01e8aabca72b1934802acf90b8fc9

主分支上存储库中的最后一次提交是:

提交 0d998c99b6d01e8aabca72b1934802acf90b8fc9
合并:a6ea4b3 1f373a9
日期:2012 年 12 月 14 日星期五 13:57:24 +0200

合并分支'new_error_code'

我试过了:

cd /var/atlassian/application-data/fisheye/managed-repos/MYREPONAME.git
git gc
git fsck --full
git reflog expire --expire=0 --all
git update-ref
git gc --aggressive

以下问题对我的情况没有帮助:

4

4 回答 4

44
git gc
git fsck --full
git reflog expire --expire=0 --all
git update-ref -d 0d998c99b6d01e8aabca72b1934802acf90b8fc9
git gc --aggressive
git remote update --prune

它奏效了!

于 2013-01-14T09:47:01.667 回答
4

为 Matt Harasymczuk 的回答提供解释:

执行垃圾收集,以便 Git 可以清理它自己造成的混乱(有关 git gc 的更多信息,请点击此处)

git gc

验证数据库中对象的连接性和有效性(有关 git fsck 的更多信息)

git fsck --full

修剪参考日志中的所有条目(有关 git reflog 的更多信息,请点击此处)

git reflog expire --expire=0 --all

删除对命名散列的引用(这里有更多关于 git update-ref 的信息)

git update-ref -d <your hash here>

再次运行垃圾收集,丢弃所有旧的增量。这将比第一次花费更长的时间,但在优化存储库方面更加彻底(更多关于积极垃圾收集的信息)

git gc --aggressive

更新远程列表,删除对不再存在的分支的引用(更多关于 git remote 的信息)

git remote update --prune
于 2021-07-08T14:17:48.230 回答
1

通常你可以这样做:

git reflog master

这将为您提供 master 指向的最后一个已知位置的列表。

一旦你知道了这一点,你就可以创建一个临时分支到旧版本的 master,即

git branch temp master@{1}

然后检查温度,看看它是否按正确的顺序。如果您在那里没有看到任何内容,那么您之前执行的命令(删除 reflog、删除悬空提交等)可能已经消除了所有恢复方式。

于 2012-12-14T17:23:52.753 回答
0

我遇到了类似的问题,但是在做go buildor go mod tidyor时go run。所有的命令都给了我同样的错误,

'错误:refs/stash 没有指向一个有效的对象!'

我尝试了以下很多事情,包括上面给出的答案。

  1. git remote prune origin
  2. git stash
  3. rm .git/refs/stash .git/logs/refs/stash

没有什么对我有用。最后,我删除了路径下系统中存在的所有缓存$GOPATH/go/pkg/mod/cache/,并且能够解决问题。

于 2021-07-09T11:30:50.623 回答