因此,我有以下文件夹结构:
.
└── testSubModules
├── README.md
└── controllers
├── controller-1
│ └── test.c
├── controller-10
├── controller-2
├── controller-3
├── controller-4
├── controller-5
├── controller-6
├── controller-7
├── controller-8
└── controller-9testSubMoudles是我的git目录的根目录。controllers目录下的每个文件夹都表示eclipse中的一个项目。
我希望能够管理项目的根(testSubModules),以及在它之下的每一个单独的项目。
我想子模是我要找的。
需求/目标/期望工作流程
git clone url/subModules
或按个别计划
git clone url/subModules/controller-1
通过阅读那篇教程,我认为这是不可能的。
假设我在控制器-1下做了一些工作。将我的更改添加到子模块的工作流是什么?
git pull。也许我拥有的所有状态都不是子模块的预期用途。那样的话,我该怎么办?
发布于 2015-06-05 09:47:49
使用Rakefile概念:在项目中可以组合多个项目:
desc 'submodule' task :submodule do sh 'git submodule init' sh 'git submodule update' sh 'git submodule add <origen>'.. .. end desc 'submodulePull' task :submodulePull do sh 'git submodule update' sh 'git submodule foreach git pull' end终端:
rake submodule以在项目中添加其他项目。 cdproject独立使用项目。可以运行git等。rake submodulePull来提取所有的项目更改。
子模块链接
发布于 2015-06-05 03:22:20
这正是子模块的目的所在。
问题是,克隆并不像您在问题中建议的那样工作,除非您在一个与项目结构相匹配的url结构中保存单独的存储库,在这种情况下,您实际上可以克隆url/ParentRepo/SubModule。这方面的一个例子是https://gerrit.wikimedia.org/r/mediawiki和https://gerrit.wikimedia.org/r/mediawiki/extensions/* -每个扩展位于url路径中,该路径与它作为mediawiki目录中的子模块的相对位置相匹配。
不幸的是,git存储库通常不是以这种方式托管的,例如,在github上,您的名称空间是平面的,所以不能将一个存储库嵌套到另一个的url下面。当单独克隆子模块时,您需要知道子模块的git存储库的绝对url,它不一定与父存储库的url相关。
子模块在概念上只存在于存储库中--当您对父存储库进行基本克隆时,它根本不获取子模块。要获得带有父存储库的子模块,必须使用git clone recursive进行初始克隆,如果已经有没有子模块的克隆,则运行git submodule update --init --recursive来获取它们。
子模块的另一个问题是,直接在子模块存储库上完成的开发不会自动显示在父存储库中。在将新提交提交到子模块存储库后,您必须显式地添加更改并将它们提交到父存储库。这个额外的步骤容易出错,而且令人讨厌,但它是子模块工作方式的基础。
https://stackoverflow.com/questions/30656743
复制相似问题