我正在运行git 1.6.4.2.垃圾收集失败说"错误:无法找到<SHA1>".
我已经设法确定丢失的对象是blob,并且我无法恢复blob文件.似乎运行"git add"和"git commit"的2个脚本同时运行并设法相互干扰,因此一个文件提交的文件比另一个版本更新,旧版本的blob消失了.
所以我现在要做的就是回滚我的存储库以取出引用引用丢失的blob的树的提交.
我知道提交所在的分支,所以我在其上运行"git reset"以回退到duff提交的父级.而且我知道分支在其他地方合并了,所以我也把那个分支倒了.据我所知,duff commit/tree/blob没有被任何东西引用.但是,如果我运行git prune --expire = now然后是git gc,那么我仍然会收到有关丢失对象的错误.
所以我的问题是:如何查询git数据库以查找包含duff blob id的每个树对象?然后我如何找出导致git prune保留它的原因?
整蛊!
谢谢凯文
kbr*_*bro 11
经过多一点挖掘后发现我的问题在这里得到解答:如何从git repo中删除一个blob - git prune没有修剪我要回收的东西,因为reflog仍然指的是它.运行
git reflog expire --expire=now --all
Run Code Online (Sandbox Code Playgroud)
修好了.此外,引用的帖子提供了一种机制,用于git lstree在每次提交时运行以查找引用的blob.
小智 6
我有同样的问题(缺少blob)和解决方案
git reflog expire --expire=now --all
Run Code Online (Sandbox Code Playgroud)
没有做到这一点.我在这里找到了我的解决方案:https://git.wiki.kernel.org/index.php/GitFaq#How_to_fix_a_broken_repository.3F
这条简单的路线
git hash-object -w <file>
Run Code Online (Sandbox Code Playgroud)
修复了丢失的blob.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
18451 次 |
| 最近记录: |