将 git 子模块更改推送到我自己的 repo

Push git submodule changes to my own repo

我刚刚开始为我的 Android 应用程序使用 git 子模块,方法是遵循此 guide

我已成功克隆存储库并更改了一些内容以满足我的应用程序的需要,但我无法将这些更改推送回我的存储库。

git status 说我的子模块中有修改的内容,但我不能只 git add 那个文件夹并推送它?

如果我尝试从子模块目录推送,它实际上会尝试推送并拒绝访问,因为我不是该 repo 的贡献者。

我希望能够不时获取新的更改,但能够保留和合并我每次尝试更新子模块时修改的小代码。

实现此目标的最佳方法是什么?我必须更改推送远程来源吗?

子模块中的更改首先需要added/commited/pushed,在子模块级别。然后在超级级别,您可以简单地添加文件夹和 commit/push。

从你的问题看来,你的子模块(比如 proj-dep)在技术上是一个外部库。

假设 proj-dep 的代码托管在 https://github.com/vendor/proj-dep 并且您已将此路径映射到您的子模块。

但是,您并不是简单地按原样使用 proj-dep,您使用的是相同版本的修改版本。

您应该创建自己的 https://github.com/vendor/proj-dephttps://github.com/alex/proj-dep 的分支并将第二个路径映射到你的子模块。

您将能够将您自己的更改推送到此分支。此外,您可以在需要时从供应商的 proj-dep 中拉取更改,并 merge/rebase 您的分支(最终将它们拉到您的子模块路径)。