【问题标题】:How to commit changes to repository but not submodule如何将更改提交到存储库而不是子模块
【发布时间】:2013-10-22 04:42:36
【问题描述】:

我正在使用pelican 制作博客。我想在我的项目中包含现有的pelican-plugins,而不将代码复制到我的存储库中。例如:

/my_project
    pelicanconf.py
    /plugins        # Just a reference to https://github.com/getpelican/pelican-plugins
        assets
        ...

我知道这可以通过git submodule 实现,如下所示:

git submodule add https://github.com/getpelican/pelican-plugins.git plugins

但是,如果我决定创建自己的插件,或者从其他地方创建用户插件,我不能将它们存储在 plugins 中,因为它现在是一个子模块。

如何在不将更改提交到子模块的情况下将更改提交到作为子模块的文件夹?我应该只创建 pelican-plugins 的分支并提交吗?

【问题讨论】:

    标签: git git-submodules pelican


    【解决方案1】:

    在这种情况下对我有用的最佳解决方案是:

    1. 分叉,或以其他方式为更改/添加创建存储库
    2. 使用git submodule 将新存储库作为子文件夹添加到我的项目中
    3. 在子模块中进行更改,或对创建的存储库进行更改然后更新子模块。

    如果您不像我那样特别关注如何跟踪更改,ton's solution 使用 Subtree 可以正常工作;最大的区别是来自存储库的所有提交都将包含在存储库的历史记录中。

    【讨论】:

      【解决方案2】:

      也许,您应该使用子树而不是子模块。

      阅读以下文章。

      Git - Subtree Merging

      Alternatives To Git Submodule: Git Subtree | Atlassian Blogs

      【讨论】:

      • Git book 中的Subtree merging -chapter 与称为subtrees 的git 特性无关。
      • 我尝试了这种方法,但是当我这样做时,文件似乎被视为存储库的一部分(而不是仅仅引用其他存储库)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多