dam*_*anb 7 git git-submodules
最近在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
Run Code Online (Sandbox Code Playgroud)
我的问题:我在git 1.7.9上,我需要克隆子模块的文件在我本地克隆中的确切位置,而不是git规定它们应该在哪里 - 就像git 1.7之前的行为一样. 8,我可以在子模块的克隆目录中找到克隆提交的所有文件.
关于如何......嗯,重新实现这一点的任何建议或想法?
找到了解决方案.
编辑文件{$project_root}/.git/modules/{$submodule_path}/.git/config并删除下面的worktree行[core],并将整个.git目录复制{$project_root}/.git/modules/{$submodule_path}/到子模块的实际位置(删除子模块所在的.git 文件之后),然后运行git checkout -f {$branch}似乎已将所有文件重新拉回来.但并不完全确定它是完整的解决方案.