我创建了一个分支,在其中我将存储库中的路径转换为子模块。我还没有把这项工作合并到master
。完成将该路径转换为子模块后,我尝试切换回master
并收到以下错误:
以下未跟踪的工作树文件将被结帐:
覆盖[...现在由子模块管理的文件列表...]
有道理。所以,我做了git checkout --force master
。然后,当我切换回使用子模块跟踪路径的分支时,该路径为空,除了在子模块中找到的.git
指针。要将子模块重新签出到索引中指定的提交,我需要git submodule update --force
。
有没有更简单的方法来处理这种情况?
答案 0 :(得分:2)
只要你保留一个目录:
master
您将获得自git submodule update
isn't automatic以来所见到的那种体验。
一种解决方法是维护两个克隆(一个在主服务器上,一个在您的分支上)。
另一种方法是设置一个post-checkout
hook:
git submodule update --force
是否恰当。lines of that hook(或this one)上的某些内容。