我有一个git项目P.在我的项目中,P是一个从第三方库的主分支克隆的子模块Q.
P
|
- src
- Vendor
|
- Q
我没有权限对第三方图书馆的远程仓库进行任何更改。
我在Q
中做了一些修正,我现在希望将这些修补程序推送到项目master
的{{1}}分支中,以便我的团队成员也可以使用它们。
目前我正在我的'P
'分支上开发。
我在dev
内尝试了以下步骤:
P
cd Vendor/Q
git branch my-fixes
git checkout my-fixes
git add
git commit -m 'My fixes to 3rd Party Library Q'
cd ../..
git add Vendor/Q
git commit -m 'Changes/fixes made to submodule Q'
然而,这似乎并没有解决我的问题。有人可以帮助我吗?
答案 0 :(得分:1)
如果您推送项目P,则没有人能够从第6步获得提交,因为您无权对第三方库的远程仓库进行任何更改。
您是否考虑过创建一个仓库来存储贵公司对Q的更改,而不是将子模块注册到第三方的远程?这样您就可以将对Q的更改保存到公司的服务器中。
答案 1 :(得分:1)
考虑到你将两个repo(Q和你的项目)集成在一起,而不必将任何修复程序推回到GitHub Q repo(因为Q不再在GitHub上更新),你可以:
答案 2 :(得分:1)
使用子模块的替代方法是git-subtree(不要与子树合并策略混淆)。与子模块相比,它的主要优势在于Q成为P历史和回购的一部分,同时保留了将Q的更改推回给供应商的能力。此外,不关心Q来自哪里的用户甚至不需要安装git-subtree。
虽然git-subtree不是核心git的一部分,但它最近merged进入了主要的git发行版,这使得它成为半官方的。