在我最后一次合并到我的Git存储库的主分支后,我失去了克隆存储库的能力。
Cloning into test-repository... remote: Counting objects: 126084, done. remote: Compressing objects: 100% (28327/28327), done. Receiving objects: 100% (126084/126084), 132.63 MiB | 29.30 MiB/s, done. remote: Total 126084 (delta 96101), reused 126078 (delta 96095) Resolving deltas: 100% (96101/96101), done. error: refs/remotes/origin/master does not point to a valid object! error: Trying to write ref refs/heads/master with nonexistant object 951aca8051823b2f202d30c9cb05401ef17618c6
Fisheye是一个存储库托管工具,正在报告:
Unable to fetch from remote repository: /var/atlassian/application-data/fisheye/managed-repos/MYREPONAME.git error: unable to find 0d998c99b6d01e8aabca72b1934802acf90b8fc9, fatal: object 0d998c99b6d01e8aabca72b1934802acf90b8fc9 not found
master分支上的存储库中的最后一次提交是:
commit 0d998c99b6d01e8aabca72b1934802acf90b8fc9 Merge: a6ea4b3 1f373a9 Date: Fri Dec 14 13:57:24 2012 +0200 Merge branch '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
以下问题对我的案例没有帮助:
答案 0 :(得分:35)
git gc
git fsck --full
git reflog expire --expire=0 --all
git update-ref -d 0d998c99b6d01e8aabca72b1934802acf90b8fc9
git gc --aggressive
git remote update --prune
它有效!
答案 1 :(得分:1)
通常你可以这样做:
git reflog master
这将为您提供主人指向的最后知道位置的列表。
一旦你知道这一点,你就可以创建一个临时分支到旧版本的主,即
git branch temp master@{1}
然后结帐临时并查看它是否处于正确的顺序。如果您没有看到任何内容,那么您之前执行的命令(删除reflog,删除悬空提交等)可能已经消除了所有恢复方法。
答案 2 :(得分:1)
为 Matt Harasymczuk 的回答提供解释:
执行垃圾收集,以便 Git 清理自己造成的混乱(More info on git gc here)
git gc
验证数据库中对象的连通性和有效性(More info on git fsck here)
git fsck --full
从参考日志中删除所有条目 (More info on git reflog here)
git reflog expire --expire=0 --all
删除对命名哈希(More info on git update-ref here)的引用
git update-ref -d <your hash here>
再次运行垃圾收集,丢弃所有旧的增量。这将比第一次花费更长的时间,但在优化存储库方面要彻底(More about aggressive garbage collection here)
git gc --aggressive
更新远程列表,删除对不再存在的分支的引用(More about git remote here)
git remote update --prune
答案 3 :(得分:0)
我在执行 go build
或 go mod tidy
或 go run
时遇到了类似的问题。所有命令都给我同样的错误,
'错误:refs/stash 没有指向有效的对象!'
我尝试了以下许多方法,包括上面给出的答案。
git remote prune origin
git stash
rm .git/refs/stash .git/logs/refs/stash
什么都不适合我。最后,我删除了系统中路径 $GOPATH/go/pkg/mod/cache/
下的所有缓存,并且我能够解决这些问题。