无法将特定 repo 添加为子模块

无法将特定 repo 添加为子模块

我正在切换到使用子模块作为我的 vim 插件。通常的做法是:

$ git submodule add https://github.com/vim-scripts/a.vim bundle/a.vim
Cloning into 'bundle/a.vim'...
etc, etc

这对于每个插件都适用,除了 Gundo:

$ git submodule add https://github.com/sjl/gundo.vim bundle/gundo

运行此命令没有输出。repo 已添加到 .gitmodules 并bundle/gundo已创建,但除了一个.git文件外,其余内容为空。

$ cd bundle/gundo
$ git status
# On branch (null)
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

我对子模块完全陌生。这个存储库有什么特别之处?我该如何正确添加它?

答案1

不确定具体发生了什么,但如果您检查/提供以下输出可能会很有用:

cd bundle/gundo
git remote -v

如果输出显示 repo 具有正确的来源,那么可能只需要检出主分支,即:

cd bundle/gunco
git fetch
git checkout master

如果子模块仍然混乱,并且一切都失败了,您可以尝试从您的仓库中删除损坏的子模块及其所有痕迹。您可以通过从 git 工作树的顶层运行以下命令来执行此操作:

git config -f .git/config --remove-section submodule.bundle/gundo
git config -f .gitmodules --remove-section submodule.bundle/gundo
git rm --cached bundle/gundo
rm -rf .git/modules/bundle/gundo
rm -rf bundle/gundo

此后,请检查git status以确保一切正常。然后尝试再次创建子模块。

如果这些都不起作用,那么尝试将您的 git 版本(运行:)git --version和您的配置(运行git config -l:)添加到问题中,因为它们可能有助于其他人弄清楚发生了什么。

PS:您不需要粘贴整个输出git config -l,并且您可能应该删除/屏蔽 user.name、user.email 以及您不想在互联网上共享的任何其他数据。

祝你好运!

相关内容