问题标签 [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.
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
不会做任何事情。新的子模块被忽略。
git - 如何将 git 存储库添加为另一个 git 存储库的共享依赖项?
我需要类似于子模块的东西,但它们作为依赖项存在于主存储库之外。
这是问题所在:
我正在尝试使用 Git(以一种非常尴尬的方式)来管理 CAD 工具(Cadsoft Eagle)的设计文件,我很难弄清楚是否有办法使用 git 子模块来管理每个项目的依赖于 CAD 工具的共享库。
我正在使用这样的文件夹结构:
在这种情况下,将 eagle.git 存储库添加为每个项目的 git 子模块是没有意义的。
但是,我仍然需要一种方法来快照“eagle.git”存储库的当前状态,以便如果将来更新库,它可以回滚以访问正在使用的库文件的特定修订版Proj[x] 已提交。
理想情况下,我想要以下内容:
我希望能够:
并让 ~/eagle/ 目录自动回滚到检查到 Proj0 的修订版。
有人知道 Git 中允许这种行为的任何东西吗?
git - Git 提交到公共子模块(主分支)
我有两个或多个项目(我们称它们为ProjectFoo和ProjectBar)有一些我放在submodule中的公共代码。
我的理解是,如果我从ProjectFoo中提交对子模块的更改,它将位于一个分离的头中,只有所有ProjectFoo克隆可以看到:
那可能是因为master
分支没有改变。我可能会做类似的事情,git checkout master && git merge Everything up-to-date
但这看起来很丑陋。可能git reset --hard master
会做同样的事情,但看起来更丑陋。
如何让项目共享一个公共代码,从使用它的项目中更新?换句话说,提交到该子模块应该更新使用相同子模块的所有各种存储库(存储库,而不仅仅是克隆)。
- - 编辑 - -
显然,我签出的存储库被搞砸了。它应该从一开始就这样工作(在这个例子中的ProjectFoo上):
然后从其他项目(例如ProjectBar )中获得更改:
将更新到最新的通用代码。git checkout master
如果它位于分离的头部,则可能需要A。
git - 使用 Symfony 和 Git(协作)
假设我们有一个包含三个应用程序的项目——A、B 和 C。我们的团队:Jack、Susan 和 Martin。还有一位项目负责人——大卫。
每个程序员都在开发自己的应用程序:
A - 杰克
B - 苏珊
C-马丁
因此,源代码管理存在问题。如何用 Git 有效地组织它?我有几个用例,但我不确定它们是否正确有效。他们来了:
- 整个项目的一个回购。
- A、B 和 C 应用程序的单独存储库(在“apps”文件夹中的相应目录中)。
我真的很喜欢第二个想法,但如果它真的有效,我不会。
你做什么事情,你会如何组织这些事情?任何帮助将不胜感激。
git - 高度耦合的 git 子模块
我有一个项目需要分成两个存储库:一组通用模型,以及基于这些模型的模拟,以及附加代码。最终可能会有多个模拟使用同一组模型,因此将它们放在单独的存储库中是一个明确的要求。显而易见的解决方案是将通用模型作为模拟的子模块。
不幸的是,这两个存储库将高度耦合。人们会经常在他们的通用模型中添加一些东西,然后立即在模拟中使用它。我想这会给模拟仓库的集成过程带来很多麻烦。为了在仿真中合并来自许多开发人员的更改,集成商必须在通用模型子模块中进行并行合并。另一方面,它也使得使用子模块变得必不可少——仿真确实需要知道它应该使用哪个版本的通用模型。
该项目由相当多的人参与。大多数开发人员对 git 的了解非常粗略:他们经常添加文件、提交和从源中提取,并希望有一个开发和稳定的分支。集成商自然学到了很多东西,但是任何涉及子模块的东西对他来说肯定是新的。额外的好处:我即将休假一个月,所以我无法扑灭任何火灾。结果是,有很多动力让工作流程真的很难搞砸,并尽量减少与人们以前工作流程的差异。
所以,我的问题是:我会后悔推荐我们为此使用子模块吗?(有更好的主意吗?)我可以期待人们犯什么样的错误,所以我可以提前警告他们?有什么好的工作流程策略需要记住吗?
编辑:我刚遇到git slave,在这种情况下也可能值得一看。除了其网站上的内容之外,还无法对能力/限制进行良好的评估。
git - Git 将子模块从现有存储库添加到超级项目
我在一个目录中有几个(大约 10-15 个)Git 存储库:
每个都有自己独立的存储库和远程服务器。
问题是,要从所有存储库中提取所有更改,我必须:
如何设置任一 Git 子模块以使用 1 个命令提取所有存储库,
或者为 Windows、Linux 和 Mac(因为我使用所有 3 个操作系统)编写一个脚本来有效地做同样的事情。请记住,存储库可以位于不同的分支上,并且不一定具有跟踪分支设置。
相同的注释:
- 所有存储库的密码都相同
- 远程服务器是相同的存储库(显然在单独的存储库/目录中)
- 我只想输入一次密码
- 我只想输入一个命令来拉取所有 repos
- 公钥/私钥不是一种选择
- 我正在通过 ssh 连接到遥控器
git - Git子模块不拉
我有一个 git repo 作为我的主项目。它添加了一些子模块。
它看起来像:
一切都很好,它的承诺和工作。但是当我将超级项目推送到源/主,然后将其克隆到另一台机器时,没有子模块被拉出。
我试过git submodule init
and git submodule update
and git submodule update --init
,都没有效果。
git - Git子树合并策略,可以不合并历史?
我一直在尝试远离子模块以获得一个独立的存储库,并且子树合并策略似乎与这个用例相匹配。
然而,合并后的 repos 历史出现在我自己的项目历史中,这很烦人。
我已经尝试过git filter-branch --subdirectory-filter path/to/subtree/ HEAD
哪个有效......直到我尝试更新一个子树,git pull -s subtree my-subtree master
它将所有子树的文件重写到我的项目的根目录。
有没有办法在 git 中实现这一点?
git - 如何“git clone”包括子模块?
我正在尝试将子模块放入回购中。问题是当我克隆父仓库时,子模块文件夹完全是空的。
有什么办法可以git clone parent_repo
将数据实际放入子模块文件夹中?
例如, http : //github.com/cwolves/sequelize/tree/master/lib/nodejs-mysql-native
指向一个外部 git 子模块,但是当我签出sequelize
项目时,该文件夹是空的。
git - Github 分支
我有一个正在从事的项目,并且正在雇用承包商来帮助我处理代码的某些部分。问题是我不希望任何一个承包商看到这一切。
GitHub上有没有办法可以在私有存储库下为他们分配一个分支?这需要命令行还是我可以在网站上执行?