问题标签 [git-submodules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
21 回答
140600 浏览

git - Git 不会初始化/同步/更新新的子模块

.gitmodules这是我的文件的部分内容:

但是,.git/config只包含第一个:

第二个子模块 ( external/pyfacebook) 是由另一个开发人员在功能分支中添加的。我现在继承了开发,并检查了功能分支。但是,Git 不会为我拉取子模块。我试过了:

  • git submodule init
  • git submodule update
  • git submodule update --init
  • git submodule sync
  • 从中删除所有子模块定义.git/config并运行git submodule init. 它只复制先前存在的子模块并忽略新的子模块。
  • .git/config手动输入新的子模块定义并运行git submodule update. 只有以前存在的子模块才需要更新。

在各种组合中,但 git 根本不会.git/config根据 的新内容进行更新.gitmodules,也不会创建external/pyfacebook文件夹并拉取子模块的内容。

我错过了什么?是否真的需要手动干预(手动添加子模块条目.git/config),为什么?

编辑:手动干预不起作用。手动添加新的子模块条目.git/config不会做任何事情。新的子模块被忽略。

0 投票
2 回答
2717 浏览

git - 如何将 git 存储库添加为另一个 git 存储库的共享依赖项?

我需要类似于子模块的东西,但它们作为依赖项存在于主存储库之外。

这是问题所在:

我正在尝试使用 Git(以一种非常尴尬的方式)来管理 CAD 工具(Cadsoft Eagle)的设计文件,我很难弄清楚是否有办法使用 git 子模块来管理每个项目的依赖于 CAD 工具的共享库。

我正在使用这样的文件夹结构:

在这种情况下,将 eagle.git 存储库添加为每个项目的 git 子模块是没有意义的。

但是,我仍然需要一种方法来快照“eagle.git”存储库的当前状态,以便如果将来更新库,它可以回滚以访问正在使用的库文件的特定修订版Proj[x] 已提交。

理想情况下,我想要以下内容:

我希望能够:

并让 ~/eagle/ 目录自动回滚到检查到 Proj0 的修订版。

有人知道 Git 中允许这种行为的任何东西吗?

0 投票
6 回答
29601 浏览

git - Git 提交到公共子模块(主分支)

我有两个或多个项目(我们称它们为ProjectFooProjectBar)有一些我放在submodule中的公共代码

我的理解是,如果我从ProjectFoo中提交对子模块的更改,它将位于一个分离的头中,只有所有ProjectFoo克隆可以看到:

那可能是因为master分支没有改变。我可能会做类似的事情,git checkout master && git merge Everything up-to-date但这看起来很丑陋。可能git reset --hard master会做同样的事情,但看起来更丑陋。

如何让项目共享一个公共代码,使用它的项目中更新?换句话说,提交到该子模块应该更新使用相同子模块的所有各种存储库(存储库,而不仅仅是克隆)。

- - 编辑 - -

显然,我签出的存储库被搞砸了。它应该从一开始就这样工作(在这个例子中的ProjectFoo上):

然后从其他项目(例如ProjectBar )中获得更改:

将更新到最新的通用代码。git checkout master如果它位于分离的头部,则可能需要A。

0 投票
2 回答
203 浏览

git - 使用 Symfony 和 Git(协作)

假设我们有一个包含三个应用程序的项目——A、B 和 C。我们的团队:Jack、Susan 和 Martin。还有一位项目负责人——大卫。

每个程序员都在开发自己的应用程序:

A - 杰克

B - 苏珊

C-马丁

因此,源代码管理存在问题。如何用 Git 有效地组织它?我有几个用例,但我不确定它们是否正确有效。他们来了:

  1. 整个项目的一个回购。
  2. A、B 和 C 应用程序的单独存储库(在“apps”文件夹中的相应目录中)。

我真的很喜欢第二个想法,但如果它真的有效,我不会。

你做什么事情,你会如何组织这些事情?任何帮助将不胜感激。

0 投票
2 回答
2590 浏览

git - 高度耦合的 git 子模块

我有一个项目需要分成两个存储库:一组通用模型,以及基于这些模型的模拟,以及附加代码。最终可能会有多个模拟使用同一组模型,因此将它们放在单独的存储库中是一个明确的要求。显而易见的解决方案是将通用模型作为模拟的子模块。

不幸的是,这两个存储库将高度耦合。人们会经常在他们的通用模型中添加一些东西,然后立即在模拟中使用它。我想这会给模拟仓库的集成过程带来很多麻烦。为了在仿真中合并来自许多开发人员的更改,集成商必须在通用模型子模块中进行并行合并。另一方面,它也使得使用子模块变得必不可少——仿真确实需要知道它应该使用哪个版本的通用模型。

该项目由相当多的人参与。大多数开发人员对 git 的了解非常粗略:他们经常添加文件、提交和从源中提取,并希望有一个开发和稳定的分支。集成商自然学到了很多东西,但是任何涉及子模块的东西对他来说肯定是新的。额外的好处:我即将休假一个月,所以我无法扑灭任何火灾。结果是,有很多动力让工作流程真的很难搞砸,并尽量减少与人们以前工作流程的差异。

所以,我的问题是:我会后悔推荐我们为此使用子模块吗?(有更好的主意吗?)我可以期待人们犯什么样的错误,所以我可以提前警告他们?有什么好的工作流程策略需要记住吗?

编辑:我刚遇到git slave,在这种情况下也可能值得一看。除了其网站上的内容之外,还无法对能力/限制进行良好的评估。

0 投票
3 回答
3236 浏览

git - Git 将子模块从现有存储库添加到超级项目

我在一个目录中有几个(大约 10-15 个)Git 存储库:

每个都有自己独立的存储库和远程服务器。

问题是,要从所有存储库中提取所有更改,我必须:

如何设置任一 Git 子模块以使用 1 个命令提取所有存储库,

或者为 Windows、Linux 和 Mac(因为我使用所有 3 个操作系统)编写一个脚本来有效地做同样的事情。请记住,存储库可以位于不同的分支上,并且不一定具有跟踪分支设置。

相同的注释:

  • 所有存储库的密码都相同
  • 远程服务器是相同的存储库(显然在单独的存储库/目录中)
  • 我只想输入一次密码
  • 我只想输入一个命令来拉取所有 repos
  • 公钥/私钥不是一种选择
  • 我正在通过 ssh 连接到遥控器
0 投票
1 回答
1313 浏览

git - Git子模块不拉

我有一个 git repo 作为我的主项目。它添加了一些子模块。

它看起来像:

一切都很好,它的承诺和工作。但是当我将超级项目推送到源/主,然后将其克隆到另一台机器时,没有子模块被拉出。

我试过git submodule initand git submodule updateand git submodule update --init,都没有效果。

0 投票
2 回答
3938 浏览

git - Git子树合并策略,可以不合并历史?

我一直在尝试远离子模块以获得一个独立的存储库,并且子树合并策略似乎与这个用例相匹配。

然而,合并后的 repos 历史出现在我自己的项目历史中,这很烦人。

我已经尝试过git filter-branch --subdirectory-filter path/to/subtree/ HEAD哪个有效......直到我尝试更新一个子树,git pull -s subtree my-subtree master它将所有子树的文件重写到我的项目的根目录。

有没有办法在 git 中实现这一点?

0 投票
18 回答
1176122 浏览

git - 如何“git clone”包括子模块?

我正在尝试将子模块放入回购中。问题是当我克隆父仓库时,子模块文件夹完全是空的。

有什么办法可以git clone parent_repo将数据实际放入子模块文件夹中?

例如, http : //github.com/cwolves/sequelize/tree/master/lib/nodejs-mysql-native指向一个外部 git 子模块,但是当我签出sequelize项目时,该文件夹是空的。

0 投票
2 回答
785 浏览

git - Github 分支

我有一个正在从事的项目,并且正在雇用承包商来帮助我处理代码的某些部分。问题是我不希望任何一个承包商看到这一切。

GitHub上有没有办法可以在私有存储库下为他们分配一个分支?这需要命令行还是我可以在网站上执行?