git子模块更新错误--init

时间:2015-12-18 11:45:25

标签: git git-submodules

我有一个包含多个git submodule s。

的主存储库

最近我遇到了一个我无法解决的新错误:

fatal: Could not switch to '~/git': No such file or directory
Clone of '~/git/MyModule_A.git' into submodule path '.modman/MyModule_A' failed

我正在做什么

首先,我像往常一样克隆主要回购:git clone /path/to/the/bare/repo.git src

然后,我运行git submodule update --init,它正确地注册了所有子模块,并将它们添加到.git/config

Submodule '.modman/MyModule_A' (~/git/MyModule_A.git) registered for path '.modman/MyModule_A'
Submodule '.modman/MyModule_B' (~/git/MyModule_B.git) registered for path '.modman/MyModule_B'
Submodule '.modman/MyModule_C' (~/git/MyModule_C.git) registered for path '.modman/MyModule_C'
fatal: Could not switch to '~/git': No such file or directory
Clone of '~/git/MyModule_A.git' into submodule path '.modman/MyModule_A' failed

到目前为止我尝试了什么

  • MyModule_A移除.gitmodules子模块,但错误会在MyModule_BMyModule_B中继续,依此类推。
  • ~/git/MyModule_A.git手动克隆到repo外部另一个工作正常的文件夹中。
  • 检查看似正确的文件权限。
  • 检查.gitmodules中的条目是否存在错误的路径,网址或任何语法问题。

1 个答案:

答案 0 :(得分:4)

问题在于子模块中的~。 Git不知道这代表/home/<yourusername>

如果用绝对路径替换它(在.gitmodules中),一切都会起作用。