如何将子模块中的更改提交到我的主项目存储库?

Jac*_*ang 9 git github git-submodules

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

我想做的是:

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

我想跟踪并更新子模块到主项目的更改;同时,我还可以从子模块刷新。

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

Hoo*_*lum 6

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

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

  1. 使用您正在使用的任何托管服务在您的帐户上创建一个新存储库。

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

  3. 将远程更改为您刚刚创建的 url,然后推送包含更改的分支。这个例子我将使用 master 分支。使用与克隆存储库相同的 URL。 git remote set-url origin git@github.com:username/repo.git git push origin master

  4. 然后只需更改您的 git 子模块以指向您刚刚复制的存储库。查看更改 git 子模块的远程存储库

每当我对依赖项进行更改并需要等待它合并和批准时,我都会执行此操作。希望这可以帮助。