首先,我有一个主项目和一个子模块。
我想做的是:
我想跟踪并更新子模块到主项目的更改;同时,我也可以从子模块刷新。
有没有更简单的方法来实现这一目标?
答案 0 :(得分:2)
跟踪git子模块中更改的唯一方法是记录可从远程访问的修订。但是您要做的是更改git模块,并在父项(即主项目git存储库)中记录这些更改。这是不可能的,因为git仅在添加git子模块时记录修订号和远程。
这就是forking的用武之地。您可以复制repo的整个历史记录并将其推送到您自己的存储库。我建议您在当前使用的修订版之上推送更改。我在等待拉取请求合并时一直这样做。如果你没有使用github并且没有fork按钮,你仍然可以使用这些步骤进行分叉。
使用您正在使用的任何托管在您的帐户上创建一个新的存储库。
克隆要更改的存储库。在主项目之外克隆这个。
将遥控器更改为刚刚创建的网址,并按其中的更改推送分支。这个例子我将使用主分支。使用您用于克隆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
每当我对依赖项进行更改并需要等待它进行合并和批准时,我都这样做。希望这会有所帮助。