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

时间:2018-02-12 06:53:29

标签: git github git-submodules

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

我想做的是:

  1. 对子模块的代码进行更改
  2. 提交主项目git存储库
    • 让主项目跟踪更改
  3. 未提交给子模块的git存储库的更改
    • 事实上,我没有权力提交它
    • 但我仍然可以从中提取最新的提交
  4. 我想跟踪并更新子模块到主项目的更改;同时,我也可以从子模块刷新。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

  2. 克隆要更改的存储库。在主项目之外克隆这个。

  3. 将遥控器更改为刚刚创建的网址,并按其中的更改推送分支。这个例子我将使用主分支。使用您用于克隆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

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

相关问题