如何查找丢失的提交版本号?新克隆Git仓库技术求助
查找Git仓库中指定文件对应的Blob/Tree对象
直接匹配文件名对应的Blob对象:
使用git grep命令遍历已缓存的对象,快速定位包含目标文件的条目:git grep --cached -l "你的目标文件名"处理悬空Blob对象(不在任何提交记录中的孤立对象):
- 先列出所有悬空的Blob对象:
git fsck --no-reflog | grep "dangling blob" - 批量筛选目标Blob:
若知道文件特征内容,用管道批量匹配,省去逐个查看的麻烦:
若不清楚特征内容,直接执行git fsck --no-reflog | grep "dangling blob" | cut -d' ' -f3 | xargs git show | grep -l "文件特征内容"git show <blob哈希值>逐个核对内容即可。
- 先列出所有悬空的Blob对象:
查找关联的Tree对象:
拿到目标Blob的哈希值后,用以下命令查找引用该Blob的Tree对象:git rev-list --all --objects | grep <目标Blob哈希值>也可以反向追踪包含该Blob的提交及关联Tree:
git log --all --find-object=<目标Blob哈希值>确认Unpack操作有效性:
如果执行git unpack-objects后.git/objects下仍无单独对象文件,检查命令格式是否正确,正确的unpack命令需要重定向pack文件输入:git unpack-objects < .git/objects/pack/你的pack文件名.pack
内容的提问来源于stack exchange,提问作者shirohoo
相关产品推荐
相关产品推荐

