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

问题描述 投票:0回答:2

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

这是我的三个示例项目:

项目A:

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

项目B:

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

项目C:

该项目应该采用数据库扭曲器并将其放入 Android ContentProvider 中以用于其他一些用例。

正如您所看到的,所有三个项目都是相互构建的,但项目 A 或项目 B 除外,但用户可能不需要 ContentProviders 的支持,到目前为止我想将其制作为独立的项目。我认为让项目 C 的user 更新所有三个独立项目的开销太大了。所以我的想法是分叉一个项目另一个项目,以便每个项目都可以更新或者在 GitHub 中如何调用它。

我的问题是:

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

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

git github project-management
2个回答
2
投票

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

  • 实施项目A
  • git init
    项目 B 然后
    git submodule add /project/a/url/
  • git submodule init && git submodule update

此时,您将在项目 B 的子目录中看到项目 A 的代码,就好像您已

git cloned
将其放入项目 B 的目录中一样。但是,项目 B 的 git 存储库现在将包含一个
.gitmodules
文件,其中包含您在
git submodule add
中使用的 URL。另外,现在当您在项目 B 中执行
git add project-a-directory
而不是提交文件更改时,您将提交一个指向当前在子模块中签出的 SHA id 的指针。

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

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

  • 如果对项目 A 进行了您想要的远程更改,则无法通过项目 B 获取它们。首先

    cd
    到子模块目录,获取更改并签出您现在希望项目 B 使用的提交。然后
    cd ..
    到项目 B 并在项目 A 子模块中提交一个指向新 SHA id 的指针。


0
投票

您还可以使用其他应用程序来管理多个项目。以下是如何使用看板工具执行此操作:https://kanbantool.com/blog/mastering-project-portfolios-through-kanban-board-swimlanes

© www.soinside.com 2019 - 2024. All rights reserved.