Git子模块的支持似乎是非常错误的。我尝试在工作树中切换分支,现在我一直得到这个错误:
fatal: could not get a repository handle for submodule 'the_submodule'
它到底是什么意思?什么是仓库句柄?
5anewei61#
我解决这个问题的方法是手动清理并重新初始化有问题的子模块:git submodule deinit the_submodulegit submodule init the_submodulegit submodule update the_submodule请注意,不幸的是,目前(2023年初)git worktree并不能很好地处理子模块。git-worktree的手册页在BUGS下面列出:多重 checkout 总体上还处于试验阶段,对子模块的支持还不完善,不建议对超级项目进行多重 checkout 。(强调我的)编辑:您也可以通过禁用submodule.recurse选项(默认为关闭)来继续git操作,即使子模块处于损坏状态,也可以通过git config或基于每个命令使用git -c submodule.recurse=no subcommand ...
git submodule deinit the_submodule
git submodule init the_submodule
git submodule update the_submodule
git worktree
git-worktree
submodule.recurse
git config
git -c submodule.recurse=no subcommand ...
1条答案
按热度按时间5anewei61#
我解决这个问题的方法是手动清理并重新初始化有问题的子模块:
git submodule deinit the_submodule
git submodule init the_submodule
git submodule update the_submodule
请注意,不幸的是,目前(2023年初)
git worktree
并不能很好地处理子模块。git-worktree
的手册页在BUGS下面列出:多重 checkout 总体上还处于试验阶段,对子模块的支持还不完善,不建议对超级项目进行多重 checkout 。
(强调我的)
编辑:您也可以通过禁用
submodule.recurse
选项(默认为关闭)来继续git操作,即使子模块处于损坏状态,也可以通过git config
或基于每个命令使用git -c submodule.recurse=no subcommand ...