问题标签 [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 投票
1 回答
180 浏览

git - 试图找出在 git 中使用子模块的正确方法

我正在尝试在 git 中正确设置子模块,并且我想确保我正确使用它。

我有一个名为MyProject. 我有一个二级存储库,其中包含我们所有的代码生成的数据访问,称为Data. 我想设置DataMyProject.

Data除非有架构更改或小错误修复,否则很少更改。

假设我正在添加一些MyProject需要更改架构的新功能。MyProject通常我会创建一个被调用的分支NewFeature并在那里签入我的所有更改,直到它准备好与 master 合并。我还想创建一个分支,以便在我的更改准备好合并之前Data,任何架构更改都保持独立。Master

什么是正确的工作流程,或者甚至有一个?

谢谢!

0 投票
14 回答
158054 浏览

git - 如何跟踪未跟踪的内容?

对于我原来的问题,请参见实线下方。

我的本地目录中有一个未跟踪的文件夹。当我运行时git status,我得到:

当我输入git add vendor/plugins/open_flash_chart_2然后再试git status一次时,它仍然显示未跟踪。这是怎么回事?


以下是我最近半小时的简单总结:

  • 发现我的 Github repo 没有跟踪我的vendor/plugins/open_flash_chart_2插件。具体来说,没有内容,它在文件夹图标上显示一个绿色箭头

  • 试过了git submodule init

    /li>
  • 试过了git submodule add git://github.com/korin/open_flash_chart_2_plugin.git vendor/plugins/open_flash_chart_2

    /li>
  • git status

    /li>
  • 寻找在我的存储库/本地目录中命名的任何文件.gitmodules,但找不到。

我该怎么做才能让我的子模块正常工作,以便 git 可以开始正确跟踪?


这可能是无关的(我包括它以防它有帮助),但每次我输入git commit -a而不是我通常的输入git commit -m "my comments"时,它都会抛出一个错误:

我是 Github 的新手,尽管尝试浏览文档,但我还是被这些特殊问题难住了。谢谢你。

0 投票
3 回答
20199 浏览

git - 单个文件作为 Git 子模块

我正在尝试确定 Git 存储库之间共享代码的最佳实践。

到目前为止,我显然已经遇到了看起来像它们 - 几乎 - 符合要求的子模块。我的项目是一个结构简单的 PHP MVC 框架:

  • /应用程序
  • 核心.php
  • /核

哪里app是包含应用程序特定控制器、模型、视图等的文件夹,而core包含一般用途的文件夹,例如登录控制器。core.php文件本身是所有请求的全局处理程序。

因此,我在这个 MVC 框架的所有部署中的共享代码是core.phpcore.

我可以看到如何core变成 Git 子模块,但不是core.php.

这甚至可能吗?我是否需要重新构建我的框架以便core.php驻留在core文件夹中,以便我可以将整个文件夹作为子模块,还是有更好的方法?

0 投票
17 回答
304252 浏览

git - 在 .gitmodule 中找不到不是子模块的路径的子模块映射

我有一个项目,其中有一个子模块lib/three20

我的.gitmodule文件如下所示:

我过去已经克隆了它而没有错误,(git submodule init后跟 a git submodule update)并且它已经工作了一段时间。

我试图将它克隆到一台新机器上,现在我得到了这个错误git submodule init

该路径只是 Xcode 中的一个空文件夹,我用来存放其他目录中的项目。它不是.gitmodules文件的一部分,所以我看不出它是从哪里获得这条路径的。

有任何想法吗?

0 投票
4 回答
18047 浏览

git - 回顾性地将 --recursive 添加到 git repo

如果你git clone--recursive,你也可以得到所有的 git 子模块。

如果我在克隆时忘记添加这个神奇的标志(可能发生),我现在该如何去获取任何子模块?

此外,如何将递归标志设置为未来克隆的默认值?

0 投票
6 回答
4193 浏览

perl - 如何卸载 Perl 模块?

我在我的 Linux 机器上安装了一些 Perl 模块。如果我输入perldoc perllocal它会显示安装在我的机器上的 Perl 模块列表,但现在我不需要这些 Perl 模块,所以我想删除它们。

有谁知道如何卸载或删除安装在 Linux(debian 2.6.26)中的那些模块?

0 投票
2 回答
4586 浏览

git - Moving submodules with Git

Is there any way to move submodules within your superproject without removing them first and re-adding them ?

0 投票
2 回答
1183 浏览

git - 与 git 子模块共享工作树

假设我有一个Common可以独立使用的库,并且被项目P1和使用P2,所以我想要的树看起来像

当我在 中进行更改时/Common,我希望能够在提交之前使用P1和测试它。P2使用通常的git submodule命令集,我必须从 提交/Common,推送到远程,然后从两者中拉取/P1/Common/P2/Common。如果提交破坏了某些内容,则无法对其进行修改,因为错误的更改已经发布。或者,我可以git remote add quicktest /Common/P?/Common不接触远程服务器的情况下进行拉取。但这有很多不一致的机会,并且从中删除损坏的提交/P?/Common以便可以在/Common.

我宁愿在开发过程/Common中使用P1and中的工作树P2,但我无法创建/P1/Common符号链接,/Common因为git submodule将符号链接识别为与目录不同。大多数文件系统不允许硬链接目录。我可以使用硬链接所有文件

在添加新文件之前效果很好,/Common在这种情况下需要重复此过程。两者都有优雅的方式吗

  1. 继续git clone --recursive git://remote/P1.git为最终用户工作,并且
  2. 让我可以轻松地测试/Common使用P1P2
0 投票
1 回答
10895 浏览

git - Git:合并和子模块

假设我在 RepoX 中有两个分支,称为 BranchA 和 BranchB。RepoX 还有一个名为 SubmoduleY 的子模块。

BranchA 在修订版“abc”具有 SubmoduleY,BranchB 在修订版“def”具有 SubmoduleY。

假设我想将 BranchA 合并到 BranchB,但我想让 BranchB 的 SubmoduleY 指向其原始版本的“def”。我看到了几种方法:

方法一:

  1. 结帐分行 B.
  2. 将 SubmoduleY 移动到修订版 'abc' 以使实际的合并变得轻松(我们现在不想在子模块级别进行任何合并)。
  3. 提交 SubmoduleY 的新修订版(我们不能让它浮动以进行合并)。
  4. 将分支 A 合并到分支 B。解决任何冲突。
  5. 将 SubmoduleY 移回修订版“def”。
  6. 提交 SubmoduleY 的新版本。
  7. 将更改推送到主仓库。

方法二:

与方法 1 相同,但不执行第 6 步,而是变基并删除第 3 步中额外的子模块提交。

两者似乎都有令人讨厌的缺点:

方法 1 将两个额外的提交放入历史记录。

方法 2 忘记了与子模块修订有关的任何更改,因为这些提交被删除了。因此,以后的任何合并都将不得不再次处理一些问题。

有没有更好的办法?

0 投票
1 回答
1201 浏览

git - 如何处理嵌套的 Git 存储库

我想与 git 分享我的 vim 配置。但是一些 vim 插件是从 git 存储库安装的

像这样的目录

我希望我的存储库最小,所以我不想在我的 git 中添加 xxxx/.git yyyy/.git,如果我不添加它们,干净的提取将不包含 xxxx/.git,所以我无法更新 xxxx 和yyyy。

顺便说一句,我怎样才能做得好,我可以在一个命令中更新 config,xxxx,yyyy 吗?