这是我的项目结构
MainProject
| README.md
| src/
| lib/ # this is a submodule
当我开发MainProject
时,我也会开发lib/
,我的意思是MainProject/lib/
。
当我推送时,我会将MainProject/lib/*
中的所有更改复制到MainProject/../lib/
,这是一个单独的git目录,然后推送。
之后,我将在MainProject/lib/
中进行子模块更新,从远程更新。
然后我将提交并推送MainProject
中的更改。
它受苦了。你如何与git子模块一起发展?
添加
我希望lib/
中的所有更改都推送到远程lib
存储库。
lib/
MainProject
旁边的所有更改都推送到远程MainProject
。
因此,如果我直接放入lib
内的远程MainProject/lib
存储库
然后在lib/
中的MainProject
旁边添加并提交并推送更改到远程。
如果其他人克隆MainProject
并执行submodule update
,他会获得最新消息来源吗?
我的.gitmodules
:
[submodule "lib"]
path = lib
url = git@github.com:XXX/YYY.git
branch = master
答案 0 :(得分:1)
您不必复制您的更改:您可以直接从MainProject/lib
推送到与上游仓库(git remote origin
)相同的上游仓库(git remote origin
中的那个)在MainProject/../lib
。
MainProject/lib
本身就是一个嵌套的repo:你可以添加commit并直接从它中推送它们。
但是,你必须回到MainProject/
,添加,提交和推送才能记录新的gitlink(the special entry in the index of the parent repo which records the SHA1 of the submodule lib)
添加并提交并将
lib/
中MainProject
旁边的更改推送到远程
否:当您在lib中提交任何内容时,将更改 gitlink (MainProject
索引中的'lib'条目)
通过“返回MainProject
”(意思是,您在MainProject/lib
并执行cd ..
),您可以执行git add。,它将:
lib/
子模块关联的新SHA1('lib
'gitlink条目)但推送MainProject
,完成更新的gitlink'lib'条目后,您确保克隆MainProject
的任何人都会在确切更新的SHA1上找回lib
。< / p>