【发布时间】:2018-02-12 06:53:28
【问题描述】:
首先我有一个主项目和一个子模块。
我想做的是:
- 修改子模块代码
- 提交到主项目git存储库
- 让主项目可以跟踪更改
- 未提交到子模块的 git 存储库的更改
- 事实上,我无权向它推送提交
- 但我仍然可以从中提取最新的提交
我想跟踪和更新子模块到主项目的变化;同时,我也可以从子模块刷新。
有没有更简单的方法来实现这一点?
【问题讨论】:
标签: git github git-submodules
首先我有一个主项目和一个子模块。
我想做的是:
我想跟踪和更新子模块到主项目的变化;同时,我也可以从子模块刷新。
有没有更简单的方法来实现这一点?
【问题讨论】:
标签: git github git-submodules
在 git 子模块中跟踪更改的唯一方法是记录可从远程访问的修订。但是您要做的是对 git 模块进行更改,并将这些更改记录在父级(即主项目 git 存储库)中。这是不可能的,因为 git 只在添加 git 子模块时记录修订号和远程。
这就是分叉的用武之地。您可以复制存储库的整个历史并将其推送到您自己的存储库。我建议将您的更改推送到您当前使用的修订版之上。在等待合并拉取请求时,我一直这样做。如果您不使用 github 并且没有 fork 按钮,您仍然可以使用这些步骤进行 fork。
使用您正在使用的任何主机在您的帐户上创建一个新的存储库。
克隆要对其进行更改的存储库。将其克隆到您的主项目之外。
将遥控器更改为您刚刚创建的 url,然后将您的更改推送到分支。这个例子我将使用 master 分支。使用与克隆 repo 相同的 url。
git remote set-url origin git@github.com:username/repo.git
git push origin master
然后只需将您的 git 子模块更改为指向您刚刚复制的存储库。看Changing remote repository for a git submodule
每当我对依赖项进行更改并需要等待它被合并和批准时,我都会这样做。希望这会有所帮助。
【讨论】: