【问题标题】:git gitignore and gitmodulegit gitignore 和 gitmodule
【发布时间】:2018-01-10 12:36:44
【问题描述】:

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

例如,假设您正在配置具有以下目录结构的项目:

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

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

您希望在您的项目中管理这种关联,该关联仅包含配置(即,如果 SubModule2 是 SubModule1 中间件的插件)。怎么处理...?

谢谢

【问题讨论】:

  • 我不确定我理解你的意思,但如果SubModule2SubModule1 中的子模块,你不能从Project“管理”它(只要“管理”意味着不仅仅是触发递归子模块更新或初始化等)。
  • 假设 SubModule1 是一个带有“Plugins”目录的框架,并且您希望在特定版本中添加一些插件,这些插件仅适用于 Project,但在更新/克隆 SubModule1 时通常不适用。

标签: git github gitlab


【解决方案1】:

如果我正确理解您的问题,您希望您的子模块包含特定于您的父存储库 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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多