Git 不同项目单独还是分开?

Git single or separate for different project?

我想知道哪种 GIT 管理对我的项目更好?

我有一个主要项目需要开发软件、固件和移动应用程序,项目结构如下所示:

+ MainApplication
     + Software (Visual Studio project)
     + Mobile (Android project)
     + Firmware (ARM project)
     + Document

那么,我是否将每个项目(软件、手机、固件)分离到一个 GIT 存储库中?或者我只是将所有项目都包含在一个大的 GIT?

我列出了以下优点和缺点:


更新 1

下面真的有很多好的反馈,我喜欢提到的一些方法,

我认为,对多个 GIT 项目会有好处。 (不确定再次选择,如上所述的利弊) 我正在考虑的原因是:将来我得到任何只需要更改移动项目的要求,那么您无需担心其他项目的更改/分支/部署。 您可以轻松地继续更改一个项目,而对其他项目保持不变。

关于 "fragmented" 存储库的 pro 论点(它是 con 对应物)不成立。

I can track all the projects at once, and it is not fragmented and easier for me to manage

您自己已经注意到:使用一个存储库无法让您正确利用 标签,而且区分历史记录会很麻烦。

在我看来,它恰恰相反。将更难管理和跟踪。

在我看来,不同的存储库是更好的选择。


您有三个不同的子项目,它们的历史或多或少不同。如果你想以某种方式对它们进行分组,submodules 可能是可行的方法,对整个项目使用 "main" 存储库。

此 "main" 存储库还可用于跟踪您的 Documents 文件夹。

一个 git 存储库中的多个项目是一种反模式。特别是在使用 maven 和 CBI(例如 Jenkins)时。当您的(子)项目使用不同的版本时,将 Maven 发布插件与 git 结合使用是不可能的。如果您对所有项目都有相同的版本,那么这可能表明您可以选择单一回购解决方案。但我建议不要这样做。 我们决定为多个相关项目使用一个存储库是有充分理由的,但我再也不会这样做了。

关于子模块和其他解决方案:这取决于您对 git 的熟悉程度。如果 git 对您来说是新手,即使没有子模块也不要低估学习曲线。

这个question和你的很相似。

我通常遵循的规则是:

  • 分支一起发布的代码归到一个仓库。
  • 分支并独立发布到单独存储库中的代码。

这是因为在 git 中您不能对存储库的某些部分进行分支或标记(例如在 Subversion 中)- 分支和标记始终用于整个存储库。

那么问题来了:你们是不是总是把所有的部分一起发布?或者它们是单独开发和发布的(甚至可能有不同的版本号)?