Git 不同项目单独还是分开?
Git single or separate for different project?
我想知道哪种 GIT 管理对我的项目更好?
我有一个主要项目需要开发软件、固件和移动应用程序,项目结构如下所示:
+ MainApplication
+ Software (Visual Studio project)
+ Mobile (Android project)
+ Firmware (ARM project)
+ Document
那么,我是否将每个项目(软件、手机、固件)分离到一个 GIT 存储库中?或者我只是将所有项目都包含在一个大的 GIT?
中
我列出了以下优点和缺点:
单身GIT
- 好:我可以一次跟踪所有项目,而且不分散,更容易管理
- 好:开始使用这个 GIT 的人会更容易,因为所有内容都显示在一个 GIT
中
- GOOD: 我可以把文档放到这个main GIT
- 不好:我不能标记或发布每个项目,除非我给它们加上前缀,而且很难跟踪这么大项目的提交
多个GIT
- BAD: GIT repo 太多,太零散,你需要为每个项目提供 3 git link 而不是一个, 麻烦
- 不好: 我也想跟踪我的文档文件夹,它将是 "funny" 为这个文档文件夹创建一个 GIT jsut
- 好: 可以轻松跟踪每个项目的问题和提交
更新 1
下面真的有很多好的反馈,我喜欢提到的一些方法,
分开GIT并组合在一起
- 好:我喜欢这个主意,因为我可以像上面提到的那样独立地跟踪它们中的每一个
- 好:我可以将所有 git 分组,我可以轻松浏览它们,而不是您需要的巨大 git 存储库浏览
- BAD:听起来很奇怪,您可能需要创建另一个 git 来跟踪文档文件夹
- 解决方案:
- 在 Github 中,您可以使用组织(一种将所有 git 分组的技巧,因为现在 git 不再属于你个人 gits
- 在GitLab中,您可以使用label,将它们分组,这样您以后可以轻松地对它们进行排序
使用 Git 子模块
- 不好:很难用
- 好: ?
我认为,对多个 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 中)- 分支和标记始终用于整个存储库。
那么问题来了:你们是不是总是把所有的部分一起发布?或者它们是单独开发和发布的(甚至可能有不同的版本号)?
我想知道哪种 GIT 管理对我的项目更好?
我有一个主要项目需要开发软件、固件和移动应用程序,项目结构如下所示:
+ MainApplication
+ Software (Visual Studio project)
+ Mobile (Android project)
+ Firmware (ARM project)
+ Document
那么,我是否将每个项目(软件、手机、固件)分离到一个 GIT 存储库中?或者我只是将所有项目都包含在一个大的 GIT?
中我列出了以下优点和缺点:
单身GIT
- 好:我可以一次跟踪所有项目,而且不分散,更容易管理
- 好:开始使用这个 GIT 的人会更容易,因为所有内容都显示在一个 GIT 中
- GOOD: 我可以把文档放到这个main GIT
- 不好:我不能标记或发布每个项目,除非我给它们加上前缀,而且很难跟踪这么大项目的提交
多个GIT
- BAD: GIT repo 太多,太零散,你需要为每个项目提供 3 git link 而不是一个, 麻烦
- 不好: 我也想跟踪我的文档文件夹,它将是 "funny" 为这个文档文件夹创建一个 GIT jsut
- 好: 可以轻松跟踪每个项目的问题和提交
更新 1
下面真的有很多好的反馈,我喜欢提到的一些方法,
分开GIT并组合在一起
- 好:我喜欢这个主意,因为我可以像上面提到的那样独立地跟踪它们中的每一个
- 好:我可以将所有 git 分组,我可以轻松浏览它们,而不是您需要的巨大 git 存储库浏览
- BAD:听起来很奇怪,您可能需要创建另一个 git 来跟踪文档文件夹
- 解决方案:
- 在 Github 中,您可以使用组织(一种将所有 git 分组的技巧,因为现在 git 不再属于你个人 gits
- 在GitLab中,您可以使用label,将它们分组,这样您以后可以轻松地对它们进行排序
使用 Git 子模块
- 不好:很难用
- 好: ?
我认为,对多个 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 中)- 分支和标记始终用于整个存储库。
那么问题来了:你们是不是总是把所有的部分一起发布?或者它们是单独开发和发布的(甚至可能有不同的版本号)?