【问题标题】:Revert to pre-git v1.7.8 git submodule behavior with submodule filesystem locations使用子模块文件系统位置恢复到 pre-git v1.7.8 git 子模块行为
【发布时间】:2012-02-28 04:32:51
【问题描述】:

最近在 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,我可以在其中 ls 子模块的克隆目录并找到克隆提交的所有文件。

关于如何...重新-实现此目标的任何建议或想法?

【问题讨论】:

    标签: git git-submodules


    【解决方案1】:

    找到了解决办法。

    编辑文件{$project_root}/.git/modules/{$submodule_path}/.git/config并删除[core]下的worktree行,并将整个.git目录从{$project_root}/.git/modules/{$submodule_path}/复制到子模块的实际位置(删除.git文件 子模块所在的位置)然后运行 ​​git checkout -f {$branch} 似乎已将所有文件拉回。不过,不完全确定这是一个完整的解决方案。

    【讨论】:

    • 您找到更简单的解决方案了吗?我遇到了同样的问题,我正在使用最新版本的 GIT。我应该能够像过去一样轻松地克隆,而不必纠结所有这些废话。我希望我的子模块复制为可以修改和推送的合法存储库。
    • 我必须这样做才能让 Gitbox 正确跟踪我的子模块。完美运行。
    猜你喜欢
    • 2013-09-07
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2015-10-25
    • 2012-04-20
    • 2010-12-04
    相关资源
    最近更新 更多