git gitignore和gitmodule

时间:2018-01-10 12:36:44

标签: git github gitlab

在GIT中,您似乎无法在其他子模块的目录结构中添加子模块。项目内的子模块路径自动在gitignore中。有办法解决这个问题吗?

例如,假设您正在使用以下目录结构配置项目:

Project
 -----|___SubModule1  
 ------------------|___SubModule2

但您不希望将SubModule2与SubModule1的存储库相关联(即,您可以通过将SubModule2作为子模块添加到SubModule1然后将SubModule1作为子模块添加到Project中来分两步完成此操作)。

相反,您希望在项目中管理此关联,该关联只保存配置(即,如果SubModule2是SubModule1中间件的插件)。怎么办呢?

谢谢

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您希望子模块包含特定于父存储库project的内容(即插件)。如果我错过了什么,请纠正我。我将在命令行中描述必要的步骤。

这可以通过在子模块存储库中创建分支轻松解决。从您的父存储库,切换到您的子模块:

cd SubModule1
git checkout -b project/plugins

现在将必要的插件添加到创建的分支,提交并推送包含所需插件的提交。

//copy plugins or whatever
git add plugins/requiredPlugin
git commit -m "Add project-specific plugins"
git push

然后,您将使用新提交在远程创建新分支,因为它是HEAD,包含您需要的插件,而SubModule1存储库的其余部分未受影响。

回到父存储库,您将看到子模块已更改。当然,这是因为它现在指向与之前不同的提交:包含插件的提交。您现在可以添加和提交更改,并让您的父存储库指向包含特定插件的子模块分支中的提交。

cd ..
git status
//see that SubModule1/ has changed
git add SubModule1
git commit -m "Update submodule to plugin branch"