最近在git 1.7.8中,引入了一个“处理”子模块的变化与以前不同 - https://lkml.org/lkml/2011/12/2/316
使用“git submodule init”填充新的子模块目录时, 子模块的$ GIT_DIR元信息目录是在里面创建的 $ GIT_DIR / modules //超级项目的目录并引用 通过gitfile机制。这是为了使切换成为可能 在具有和没有的超级项目中的提交之间 树中的子模块没有重新克隆。
现在,不是将子模块克隆到指定的目录中,而是创建一个.git 文件,其中包含:
$ cat .git
gitdir: ../../../../.git/modules/app/src/emberlabs/openflame
我的问题:我正在使用git 1.7.9,我需要将克隆的子模块的文件放在我本地克隆中的确切位置,而不是git指示它们应该在哪里 - 就像之前的行为一样git 1.7.8,我可以使用子模块的clone目录并查找克隆提交的所有文件。
有关如何......好的, 重新 的任何建议或想法 - 解决这个问题?
答案 0 :(得分:8)
找到了解决方案。
编辑文件{$project_root}/.git/modules/{$submodule_path}/.git/config
并删除worktree
下的[core]
行,并将整个.git目录从{$project_root}/.git/modules/{$submodule_path}/
复制到子模块的实际位置(删除后)子模块所在的.git
文件,然后运行git checkout -f {$branch}
似乎已经重新启动了所有文件。但并不完全确定它是一个完整的解决方案。