修改Git submodule内容后,可以将改动推送到自己的仓库吗?
问题解答
完全可以将submodule的改动推送到自己的仓库,核心操作是修改submodule关联的远程仓库地址为你自身有权限的仓库,具体操作步骤如下:
- 第一步:先在你使用的代码托管平台创建对应开源库的复刻仓库,确保你对该复刻仓库有写入权限。
- 第二步:进入项目中的submodule目录,执行
git remote -v查看当前远程地址,默认的origin地址会指向你没有推送权限的原开源库地址。 - 第三步:修改submodule的origin远程地址为你的复刻仓库地址,执行命令:
git remote set-url origin 你的复刻仓库地址
如果后续你需要同步原开源库的更新,可以额外添加指向原库的远程源:git remote add upstream 原开源库地址
之后拉取上游更新只需执行git pull upstream 对应分支名即可。 - 第四步:确认远程地址修改无误后,在submodule目录下执行
git push origin 对应分支名,即可将改动推送到你自己的复刻仓库。 - 第五步:回到主项目根目录,执行
git add 你的submodule目录路径,提交并推送主项目的更新,主项目就会关联到你复刻仓库的最新提交记录,其他协作者拉取主项目后即可获取到修改后的submodule代码。
补充说明:如果是多人协作开发该主项目,可以直接修改主项目根目录下的
.gitmodules文件,将对应submodule的url字段替换为你的复刻仓库地址,提交该改动后,所有协作者拉取更新后执行git submodule sync即可自动同步submodule的远程地址,无需逐个手动修改。
内容的提问来源于stack exchange,提问作者Darman
相关产品推荐
相关产品推荐

