将git子模块中的更改推送到主模块,但不推送到子模块

时间:2020-10-16 14:08:38

标签: git github bitbucket

我有一个git项目A,它使用来自Github的子模块B。我不能进入Github项目B,因为它不是我的。我想在B中做一个小的更改,该更改不推送到远程B(因为我无法推送),但是应该推送到A(因此,当有人使用A时,他应该能够看到我的更改)。 我尝试在B中提交,然后在A中提交,似乎更改已正确提交。当我按A到bitbucket时,会显示带有新提交的子模块。 我试图在其他地方克隆A,但是出现以下错误:

fatal: remote error: upload-pack: not our ref 7b9e40769855bc50f3be629cd8307d76dd8ecf1b
fatal: the remote end hung up unexpectedly
Fetched in submodule path 'src/B', but it did not contain 7b9e40769855bc50f3be629cd8307d76dd8ecf1b. Direct fetching of that commit failed.

我猜找不到新提交,因为它没有被推送到B的远程。 有没有办法解决? 我希望保留B作为子模块,以便可以从远程项目中获取更新,但我也需要这些小的更改

1 个答案:

答案 0 :(得分:1)

如果要共享它,则必须以某种方式发布它。

一种方法是:

  • 在github上:fork项目B
  • 发布您想要的提交
  • 在项目A中:更新git模块的远程url以指向您的fork,并使用提交ID作为您创建的提交。

稍后,如果要将所需的更改集成到上游B,则可以切换回项目B的原始基本URL。


如果可以的话,另一种选择是,在对A的下一次提交中,停止将B作为子模块处理,并将其集成为仓库的子树。