首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Git和子模块的使用

Git和子模块的使用
EN

Stack Overflow用户
提问于 2015-06-05 01:08:22
回答 2查看 101关注 0票数 2

因此,我有以下文件夹结构:

代码语言:javascript
运行
复制
.
└── 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-9

testSubMoudles是我的git目录的根目录。controllers目录下的每个文件夹都表示eclipse中的一个项目。

我希望能够管理项目的根(testSubModules),以及在它之下的每一个单独的项目。

我想子模是我要找的。

需求/目标/期望工作流程

  1. 新开发人员应该能够同时从根目录中获得项目。

git clone url/subModules

或按个别计划

git clone url/subModules/controller-1

通过阅读那篇教程,我认为这是不可能的。

  1. 开发人员如何只在子模块上进行提交和推送更改?

假设我在控制器-1下做了一些工作。将我的更改添加到子模块的工作流是什么?

  1. 让我们说,Eric,另一个开发人员现在想要我对子模块的更改,他如何更新他的工作区?
  2. 让我们说,詹姆斯,另一个开发人员想要一切,然后他可以在项目的根上做一个git pull

也许我拥有的所有状态都不是子模块的预期用途。那样的话,我该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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以在项目中添加其他项目。 cd project独立使用项目。可以运行git等。 rake submodulePull来提取所有的项目更改。

子模块链接

票数 4
EN

Stack Overflow用户

发布于 2015-06-05 03:22:20

这正是子模块的目的所在。

问题是,克隆并不像您在问题中建议的那样工作,除非您在一个与项目结构相匹配的url结构中保存单独的存储库,在这种情况下,您实际上可以克隆url/ParentRepo/SubModule。这方面的一个例子是https://gerrit.wikimedia.org/r/mediawikihttps://gerrit.wikimedia.org/r/mediawiki/extensions/* -每个扩展位于url路径中,该路径与它作为mediawiki目录中的子模块的相对位置相匹配。

不幸的是,git存储库通常不是以这种方式托管的,例如,在github上,您的名称空间是平面的,所以不能将一个存储库嵌套到另一个的url下面。当单独克隆子模块时,您需要知道子模块的git存储库的绝对url,它不一定与父存储库的url相关。

子模块在概念上只存在于存储库中--当您对父存储库进行基本克隆时,它根本不获取子模块。要获得带有父存储库的子模块,必须使用git clone recursive进行初始克隆,如果已经有没有子模块的克隆,则运行git submodule update --init --recursive来获取它们。

子模块的另一个问题是,直接在子模块存储库上完成的开发不会自动显示在父存储库中。在将新提交提交到子模块存储库后,您必须显式地添加更改并将它们提交到父存储库。这个额外的步骤容易出错,而且令人讨厌,但它是子模块工作方式的基础。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30656743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档