2

我创建了一个分支,在其中我将存储库中的路径转换为子模块。我还没有将这项工作合并到master。将该路径转换为子模块后,我尝试切换回master并收到以下错误:

以下未跟踪的工作树文件将被结帐覆盖:

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

说得通。所以,我做到了git checkout --force master。然后,当我切换回使用子模块跟踪路径的分支时,除了.git您在子模块中找到的指针 find 之外,该路径是空的。为了让子模块重新签出到索引中指定的提交,我需要做git submodule update --force.

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

4

1 回答 1

2

只要你保留一个目录:

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

您将获得您所看到的那种体验,因为git submodule update它不是自动的。

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

另一种是设置一个post-checkout钩子,它将:

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

类似于那个钩子(或这个)的东西。

于 2013-09-10T05:59:57.403 回答