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

git - 正确的 git 子模块链接

因为我不想为简单易用的 github.com 私人托管花费 +12 美元,所以我将很多代码库放在共享托管帐户上的小型存储库中。这使我可以拥有尽可能多的代码仓库。

由于这些存储库不占用任何资源,因此我还在该帐户上放置了几个非常轻量级的站点,以最大限度地提高我的使用率。这些站点实际上使用其中一些相同的代码库作为其项目的子模块。

因此,我通过 ssh 为每个 repo 和站点推送/拉取代码。网站本身只设置了几个指令,也会拉取这些子模块。

所以我在我的电脑上有一个 simplesite.tld 项目,其子模块如下所示:

然后我将代码推送到 simplesite.tld 并通过 SSH 登录到共享主机并更新 simplesite.tld 模块

但它要求我输入“用户”的 SSH 密码,以便登录并获取 repo 代码。这只是一个烦恼,因为 repo 在同一台服务器上。

那么是否有更好的子模块链接可以让外国计算机(如我的 PC)和同一个硬盘驱动器中的项目都可以使用?

0 投票
1 回答
174 浏览

git - 如何在带有子模块的存储库上执行 git checkout?

假设我有一个X带有子模块的存储库A。现在假设我想要X两个分支:master 和 development。我希望 master 有A与 development 不同的版本。如何在这些分支之间来回切换?

我已经设置了一个存储库来执行此操作(但使用真实姓名而不是假名!)。问题是,每当我git checkout master从开发中进行操作时,我都会得到以下信息:

看起来它并没有A退回到 master 引用的提交。有没有办法解决?两者似乎都没有改变任何东西git submodule syncgit submodule update

0 投票
1 回答
269 浏览

git - 我在 GitHub 上的目录发生了什么变化?

我在我的 git 存储库中添加了一个新的子目录:

然后提交了这个并将其推送到 GitHub,但似乎我已经提交了一个符号链接/快捷方式,而不是其中的实际目录和文件。

见这里:http: //github.com/G4EGK/RSS-Reader

知道什么是“饲料”吗?

我想删除它并正确添加我的文件。我尝试了以下方法,但git status说没有任何改变:

要删除提要,我是否运行以下命令?


更新

谢谢韦斯。

git filter-branch没有从我的仓库中删除这个子模块(当我查看时它仍然被跟踪git status

为了消除这个错误,我恢复了最后两次提交(我尝试添加提要类)。

使用了命令:

然后我删除了提交 2 和 3,留下了第一行(我在 4 月 2 日的提交),保存了我的更改(:wq)并强制推送到 GitHub。

现在我的 GitHub 存储库又回到了添加提要之前的位置。

我最初的错误是在最初添加提要时忘记在末尾使用斜杠。我应该用

0 投票
1 回答
398 浏览

git - git 参考公共目录/repo

项目布局:

project_a 和 project_b 都需要包含共享文件夹。使用 svn,我们使用 svn:externalsand 效果很好,因为 svn 可以引用子目录(也可以使用相对路径)。但是,我们转移到了 git,它似乎不支持签出子目录。

我们现在的解决方案是将project_a、project_b和shared都放在不同的git repos中,并在project_a和project_b中使用git子模块。然而,这似乎比一个带有 svn:externals 的单一 svn 存储库要复杂得多。处理git中常见元素的正确方法是什么?

编辑:共识是子模块是要走的路。但是用了一天,感觉用起来很不友好。

在对共享文件进行更改后,我必须:

  1. 提交共享中的更改
  2. 推动份额变化
  3. 在父目录中再次添加共享目录
  4. 推送父目录

与 svn 中的单个提交相比,这似乎要复杂得多。缺少其中一个步骤会导致版本控制混乱。我在这里错过了什么吗?

0 投票
7 回答
3148 浏览

ruby-on-rails - 在两个或多个 Rails 应用程序之间共享代码...... git 子模块的替代品?

我们有两个独立的 rails_appfoo/bar/(分开是有充分理由的)。它们都依赖于文件夹中的某些模型等,当前与和common/平行。foobar

我们当前的 svn 设置用于svn:externals共享common/. 这个周末我们想试试 git。经过大量研究,似乎解决此问题的“犹太洁食”方法是使用git submodule. 我们在将foo,分离到单独的存储库后得到了它的工作barcommon但随后实现了所有附加的字符串

  1. 始终在提交父模块之前提交子模块。
  2. 总是在推送父模块之前推送子模块。
  3. 在提交之前确保子模块的 HEAD 指向一个分支。(如果您是 bash 用户,我建议使用 git-completion 将当前分支名称放在提示符中。)
  4. 在切换分支或拉取更改后始终运行“git submodule update”。

所有这些陷阱比add, commit,更复杂push。我们正在寻找common在 git 中共享的更简单方法。这家伙似乎在使用git subtree扩展方面取得了成功,但这与标准 git 有所不同,而且看起来仍然没有那么简单。

考虑到我们的项目结构,这是我们能做的最好的吗?我对 Rails 插件/引擎知之甚少,但这似乎是一种可能的 RoR 式共享库的方式。

提前致谢。

0 投票
2 回答
1567 浏览

ruby-on-rails - 在两个 Rails 项目之间共享模型 - 使用 git 子模块?

我有一个 Rails 网站,它分为两个独立的项目——公共网站和管理网站。

由于两个站点都使用相同的数据库,因此模型在应用程序之间共享(实际上现在它们是重复的)。我在这里遇到的问题是,当公共项目中发生模型更新时,我需要将更改复制到管理项目中。

我环顾四周,注意到有一个问题的答案建议使用 svn:external 或 git submodule,但我不完全确定如何执行此操作。

本质上,我的目标是能够仅在一个地方进行更改,将这些更改提交到git,然后在我需要更新时能够在另一个项目中提取更改。

0 投票
2 回答
1373 浏览

git - git子模块,忽略错误的目录

我是 git 新手,但在尝试之前花了很多时间阅读文档和 git 子模块的陷阱。我有一个问题,我觉得 - 可能是天真的 - 是 git 中的一个错误:

我有一个项目,在那个根目录中我有一个插件文件夹,其中有一个名为 myplugin 的子模块。我添加了它

效果很好。一切都正常工作了大约一周。我使用的框架支持覆盖插件内的视图。这些必须存储在

问题是,git认为覆盖文件夹也在:

Git 不会在我的 views/plugins/myplugin 目录中提交任何内容,它不会跟踪文件,无论我做什么,我都无法忽略它。在 Github 中,它显示为绿色箭头,表示它是一个子模块,当我切换分支时,该目录继承了子模块的方式

我已经拉了一个多小时的头发并且没有任何进展......非常感谢任何帮助!

0 投票
1 回答
3493 浏览

git - Git 子模块或 fork

我在 github 中有一个私人仓库,它是我的 cms 的完整源代码。现在我有一些本地客户,我想使用相同的代码库,但主题不同。将原始项目分叉为每个项目是否更好。或者使用子模块并为每个客户创建一个新的仓库?

在每个站点完成后,我想主题文件不会有太大变化,但是当发现错误时需要从主存储库中提取更改。

0 投票
1 回答
989 浏览

django - 在 git 项目中创建子模块

我有一个 Django 项目,它目前托管在 GitHub 中并且是私有的。我希望将它的许多有用部分转移到一个开源项目中。我想我需要使用“子模块”的东西,但不幸的是我不知道如何操作这些。

请有人可以帮助我:)

0 投票
2 回答
747 浏览

git-submodules - 在 .NET 解决方案中正确使用子模块

我有一个我用这样的结构编写的库​​:

我想将此作为SolutionB. 如果我将整个结构用作子模块,它会得到一堆SolutionB不关心的东西;它不在乎SolutionA.sln;它不在乎Tests\;它不在乎Tools\。真的,SolutionB只在乎Core\

看起来我需要一个单独的存储库Core\。那么通常的做法是为 .NET 解决方案提供两个存储库,其源被其他解决方案使用?一个只用于(非测试)代码本身(加上所需的库),一个用于测试工具和解决方案文件?