代码之家  ›  专栏  ›  技术社区  ›  Dmitry Minkovsky

当当前分支没有使用子模块管理路径时,我如何签出该分支?

git
  •  2
  • Dmitry Minkovsky  · 技术社区  · 11 年前

    我创建了一个分支,在其中我将存储库中的一条路径转换为一个子模块。我还没有把那项工作合并到 master 然而在完成将该路径转换为子模块后,我尝试切换回 主人 并得到以下错误:

    签出时将覆盖以下未跟踪的工作树文件:

    […现在由子模块管理的文件列表…]

    有道理。所以,我做到了 git checkout --force master 然后,当我切换回用子模块跟踪路径的分支时,除了 .git 在子模块中找到的指针查找。要将子模块重新签出到索引中指定的提交,我需要 git submodule update --force .

    有没有更简单的方法来处理这种情况?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Community CDub    7 年前

    只要您保留一个目录:

    • 作为一个分支中的子模块
    • 作为中的一组托管文件 master

    你会有你所看到的那种体验,因为 git submodule update isn't automatic .

    一种解决方法是维护两个克隆(一个在master上,一个在您的分支上)。

    另一种是设置 post-checkout hook 这将:

    • 检测检出的分支
    • git submodule update --force 是合适的。

    沿着 lines of that hook (或 this one ).