如何在多分支git项目中合理使用子模块?

时间:2018-12-13 14:03:51

标签: git git-submodules

我有一个名为G的git项目,它有多个名为A,B,C的分支...然后在分支A中添加一个子模块S,对其进行更新,然后提交所有更改。因此,我在工作目录中有一个.gitmodule文件和一个也称为S的“目录”,以及.git / config中的一些更改以跟踪模块的信息。

然后,如果我直接检出分支B,则git会将“目录” S定义为未跟踪的目录。据我了解,这是由于分支B中既没有.gitmodule也没有任何其他配置文件可以将S定义为子模块,因此git只是将其视为未跟踪的目录。

这有点烦人。如果我删除分支B中的目录S,那么当我再次签出分支A时,子模块S也将更改。但是我不想将子模块S或目录S添加到分支B(或添加到A以外的任何其他分支)。

所以我的问题是,有什么方法可以只在一个分支中添加一个子模块,而不影响其他分支?

我知道我可以在分支A处签出B之前先“ git submodule deinit S”。但是我认为这不是那么方便。我只想在另一个项目中使用文件,为什么每次都要初始化并取消初始化它?还是我对子模块的用法理解不正确?

我还考虑将目录S添加到其他分支的.gitignore中,但是如果分支很多,这会更加不便。

我还考虑将项目S文件复制到分支A并提交。但是后来我无法直接跟踪项目S中的更改。

我还考虑使用项目S的符号链接,这最终满足了我的需求。但是我仍然想知道git中是否有办法解决这个问题。

(我正在使用git 2.17.1

0 个答案:

没有答案