【问题标题】:How to commit changes in submodule to my main project repository?如何将子模块中的更改提交到我的主项目存储库?
【发布时间】:2018-02-12 06:53:28
【问题描述】:

首先我有一个主项目和一个子模块。

我想做的是:

  1. 修改子模块代码
  2. 提交到主项目git存储库
    • 让主项目可以跟踪更改
  3. 未提交到子模块的 git 存储库的更改
    • 事实上,我无权向它推送提交
    • 但我仍然可以从中提取最新的提交

我想跟踪和更新子模块到主项目的变化;同时,我也可以从子模块刷新。

有没有更简单的方法来实现这一点?

【问题讨论】:

    标签: git github git-submodules


    【解决方案1】:

    在 git 子模块中跟踪更改的唯一方法是记录可从远程访问的修订。但是您要做的是对 git 模块进行更改,并将这些更改记录在父级(即主项目 git 存储库)中。这是不可能的,因为 git 只在添加 git 子模块时记录修订号和远程。

    这就是分叉的用武之地。您可以复制存储库的整个历史并将其推送到您自己的存储库。我建议将您的更改推送到您当前使用的修订版之上。在等待合并拉取请求时,我一直这样做。如果您不使用 github 并且没有 fork 按钮,您仍然可以使用这些步骤进行 fork。

    1. 使用您正在使用的任何主机在您的帐户上创建一个新的存储库。

    2. 克隆要对其进行更改的存储库。将其克隆到您的主项目之外。

    3. 将遥控器更改为您刚刚创建的 url,然后将您的更改推送到分支。这个例子我将使用 master 分支。使用与克隆 repo 相同的 url。 git remote set-url origin git@github.com:username/repo.git git push origin master

    4. 然后只需将您的 git 子模块更改为指向您刚刚复制的存储库。看Changing remote repository for a git submodule

    每当我对依赖项进行更改并需要等待它被合并和批准时,我都会这样做。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多