有一个A
项目,A项目有一个子模块S
一个
| -S
| -B
| -C
回购:git@github.com: benjamin / A .git
S repo:git@github.com:所有者 / S .git
为了提供一些错误修复,我分叉了A
存储库并克隆了它。
$ git clone git@github.com:benjamin/A.git
然后下载submodule S
我命令
$ git submodule init
$ git submodule update
好的,代码树做得很好,我将错误修复为A
中的文件和S
中的文件。
提交并推送这两个文件,
$ cd S
$ git add modified_file
$ git commit -a -m 'submodule commit'
$ git push
但推动不起作用。
错误:对所有者/ S.git的许可被拒绝给本杰明 致命:远程端意外挂断
我是否也应该分叉S
存储库?在这种情况下你怎么做?
答案 0 :(得分:2)
是的,子模块本身就是一个git repo 你需要
A
和S
之间创建一个符号链接(仅用于编译代码,即不要在本地使用S
子模块状态)A
,一个用于S
)只有A
和S
的维护者才能:
S
中提交您的拉取请求并提交A
A
中提交,记录S
(子模块)的新SHA1以及A
中的更改。Mark Longair提到您可以:
A
git submodule init
git submodule update
(将S
克隆到右侧SHA1,但将“S
”作为远程,而不是“forked-S
”cd S
git remote set-url origin <SSH-url-of-fork-of-S>
git checkout -b my-changes-to-S
:创建一个分支,以记录您的本地修改,并避免进入detached HEAD
mode。