git - 使用 git 管理多个项目,这些项目相互构建并且可以独立使用

标签 git github project-management

我正在计划一个我想在 GitHub 上发布的开源项目。我想创建几个相互扩展的项目。但是我想要更改一个公共(public)基类的选项,该基类应该与其父项目 merge ,但只有共享文件,没有公共(public)文件的扩展应该是独立的。

这是我的三个示例项目:

项目 A:

我想实现一个名为 ObservableArray 的有用类。该类将扩展一个列表,该列表通过一个接口(interface)观察其项目并将这些更改传播到注册监听器。这对于像我的项目 B 这样的多个项目应该很有用。

项目 B:

我想实现一个 SQlite 数据库 warper,它允许简单地访问只是普通类的行列表。在项目 A 的帮助下,可以很容易地跟踪数据模型中的更改,这些更改可以简单地与 SQLite 数据库同步。

项目 C:

这个项目应该将数据库 warper 放入 Android ContentProvider 中以用于其他一些用例。

如您所见,除了项目 A 或项目 B 之外,所有三个项目都建立在彼此之上,但到目前为止,用户可能不需要 ContentProviders 的支持,我想将其变成独立的项目。我认为让项目 C 的用户 更新所有三个独立项目的开销太大。所以我的想法是将一个项目 fork 到另一个项目,这样每个项目都可以更新,或者这在 GitHub 中是如何调用的。

我的问题是:

  1. 是否可以 fork 项目以便双向更新基类?
  2. 假设我需要更新项目 A 的类,我需要执行哪些步骤才能更新其他两个项目?
  3. 如何防止我在项目 A 中不小心 checkin 了项目 C 的文件?我会使用不同的命名空间,这样我就可以使用忽略列表。这会解决我的问题吗?

我知道这是一些安静的基本问题,我试图了解 git 的基础知识,来自 GitHub 的 fork 图让我认为这应该是可能的,但似乎只有当您有多个帐户时这才有效。请赐教!

最佳答案

听起来您正在寻找 submodules .子模块基本上允许您指向另一个 git 项目中的特定提交。在您的示例中,您将执行以下操作:

  • 实现项目 A
  • git init 然后项目 B git submodule add/project/a/url/
  • git 子模块初始化 && git 子模块更新

此时您将在项目 B 的子目录中看到项目 A 的代码,就好像您将其 git 克隆 到项目 B 的目录中一样。但是,项目 B 的 git 存储库现在将包含一个 .gitmodules 文件,其中包含您在 git submodule add 中使用的 URL。此外,现在当您在项目 B 中执行 git add project-a-directory 而不是提交文件更改时,您将提交一个指向当前在子模块中 checkout 的 SHA id 的指针。

您应该仔细阅读文档,子模块非常有用,但要掌握它可能有点棘手。

  • 如果您在项目 A 子模块中进行更改,则无法从项目 B 提交它们。项目 A 子模块具有项目 A 的完整 git 存储库。要提交更改,您需要提交更改并推送到项目 A 的存储库,然后提交指向项目 B 中新 SHA 的新指针。

  • 如果对项目 A 进行了您想要的远程更改,您无法通过项目 B 获取它们。首先 cd 到子模块目录,获取更改并检查您现在的提交希望项目 B 使用。然后 cd .. 到项目 B 并在项目 A 子模块中提交指向新 SHA id 的指针。

关于git - 使用 git 管理多个项目,这些项目相互构建并且可以独立使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934079/

相关文章:

project-management - 多项目、多团队部门的看板可视化和工作流管理

ruby-on-rails - 如何防止 capistrano 覆盖用户在自己文件夹中上传的文件?

git - NetBeans 7.2 git 推送错误

eclipse - 如何关闭 Eclipse 对 .md 文件的错误报告

github - 错误: Undo last git commit on both local and remote

php - 我们公司使用SVN。我的整个团队希望我们每次都通过复制所有内容来进行部署

objective-c - git、国际化和 iOS 字符串文件

mysql - 使用git将mysql数据库脚本推送到服务器

git - 如何使 Jenkins 构建状态徽章动态显示其文件所在的分支

templates - 在哪里可以找到示例燃尽/规划游戏模板?