我在初始化 repo sync 时遇到一个问题,我的一个 Android 项目出现类似以下错误
致命:无法为某个特定项目解压树对象 HEAD”并伴随错误。GitError:无法初始化 /project 的工作树。
因此我请求您帮助我摆脱这个错误。
答案1
我最近遇到了类似的问题,但不是HEAD
:
fatal: failed to unpack tree object 27897029c61a19819a55923c664da5796cc82d1d
error: Submodule 'submoduleXYZ' could not be updated.
error: Cannot update submodule: submoduleXYZ
更新子模块没有帮助。我求助于git reset --hard origin/theBranchName
,然后git checkout theBranchName
,和git pull
。
答案2
我最近遇到了同样的问题,这是由于url
子模块内的 .gitmodules 中的字段发生变化造成的。
所以我猜测发生了什么,git 试图找到 submodule-submodule 的一个新的提交哈希,但是由于在 url 下没有这样的哈希,所以它给出了错误。
我尝试过git submodule sync
不同的方法,但都没有效果。
因此不幸的是,目前我只知道一个解决方案:删除整个存储库并再次克隆。
答案3
就我而言,这是由于没有推送子模块造成的。
git reset --hard --recurse-submodules
尝试重置为已提交的子模块 sha。
子模块本身没有被推送,因此 sha 没有被拉取。
在我从开发工作区推送这些子模块并将其拉入存在问题的工作区后,命令git reset --hard --recurse-submodules
停止并显示您指定的问题。
基本上,您需要检查此 sha 是否存在。检查是谁推送了引用缺失子模块 sha 的提交。也可以通过强制子模块分支更新将其删除。
答案4
对我来说,问题是我submodule.recurse
在 git 配置中启用了,然后遇到了无法切换到该分支的问题。最后我照做了,git switch --recurse-submodules=false main
然后git submodule update --init --recursive
提取了相关更改。