将 git 子模块中的更改推送到主模块而不是子模块
Push changes in git submodule to main module but not to submodule
我有一个 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 作为子模块,这样我就可以从远程项目中获取更新,但我也需要这些小的更改
如果你想分享它,你必须以某种方式发布它。
一种方法是:
- 在 github:fork 项目
B
- 在你的分叉上发布你想要的提交
- 在项目
A
中:更新 git 模块远程 url 以指向您的分支,并使用您创建的提交的提交 ID。
稍后,如果您想要的更改集成到上游 B
,您可以切换回项目 B
的原始基础 url。
另一个选项,如果您同意的话,是在您在 A
的下一次提交中,停止将 B
作为子模块处理,并将其集成为您的存储库的子树。
我有一个 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 作为子模块,这样我就可以从远程项目中获取更新,但我也需要这些小的更改
如果你想分享它,你必须以某种方式发布它。
一种方法是:
- 在 github:fork 项目
B
- 在你的分叉上发布你想要的提交
- 在项目
A
中:更新 git 模块远程 url 以指向您的分支,并使用您创建的提交的提交 ID。
稍后,如果您想要的更改集成到上游 B
,您可以切换回项目 B
的原始基础 url。
另一个选项,如果您同意的话,是在您在 A
的下一次提交中,停止将 B
作为子模块处理,并将其集成为您的存储库的子树。