Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同项目的Git是单一的还是单独的?_Git_Github_Project Management - Fatal编程技术网

不同项目的Git是单一的还是单独的?

不同项目的Git是单一的还是单独的?,git,github,project-management,Git,Github,Project Management,我想知道对于我的项目,哪一个是GIT管理的更好选择 我有一个主要项目,需要开发软件、固件和移动应用程序,项目结构如下所示: + MainApplication + Software (Visual Studio project) + Mobile (Android project) + Firmware (ARM project) + Document 那么,我是否将每个项目(软件、移动设备、固件)分离为一个GIT回购?或者我只是将所有项目都包含在一个大

我想知道对于我的项目,哪一个是GIT管理的更好选择

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

+ MainApplication
     + Software (Visual Studio project)
     + Mobile (Android project)
     + Firmware (ARM project)
     + Document
那么,我是否将每个项目(软件、移动设备、固件)分离为一个GIT回购?或者我只是将所有项目都包含在一个大GIT中

我有下面列出的优点和缺点:

  • 单吉特

    • 很好:我可以一次跟踪所有的项目,而且项目不分散,更易于管理
    • :人们在开始使用这个GIT时会更容易,因为所有内容都显示在一个GIT中
    • 很好:我可以将文档放入这个主GIT中
    • 糟糕:我无法标记或发布每个项目,除非我在它们前面加上前缀,而且很难跟踪如此大项目的提交
  • 多GIT

    • 不好:太多的GIT回购,太分散,你需要为每个项目提供3 GIT链接,而不是一个,很麻烦
    • 不好:我也想跟踪我的文档文件夹,为这个文档文件夹创建一个GIT jsut会很“有趣”
    • :可以轻松跟踪每个项目问题并提交

更新1

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

  • 将GIT分离并分组

  • :我喜欢这个想法,因为我可以像上面提到的那样独立跟踪每个人
  • 很好:我可以将所有git分组,并且可以轻松浏览它们,而不是需要浏览的巨大git回购
  • 不好:听起来很奇怪,您可能需要创建另一个git来跟踪文档文件夹
  • 解决方案:
    • Github中,您可以使用organization(有点像黑客)将所有git分组,因为现在git不再属于您的个人git
    • 在GitLab中,您可以使用标签对它们进行分组,以便将来可以轻松地对它们进行排序
  • 使用Git子模块

  • 不好:难以使用
  • 好的:

我认为,对于多个GIT项目来说,这将是一个很好的选择 我考虑的原因是:在未来,我得到了任何只需要在移动项目中进行更改的需求,例如,那么您不需要担心其他项目的更改/分支/部署。
您可以轻松地继续更改一个项目,而对其他项目保持不变。

关于“碎片化”存储库(以及它的con对应项)的pro论点站不住脚

我可以一次跟踪所有的项目,而且它不是零碎的,对我来说更容易管理

您已经注意到了:使用一个存储库将不允许您正确地利用标记,并且区分历史记录会很麻烦

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

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


您有三个不同的子项目,它们的历史或多或少不同。如果您想以某种方式对它们进行分组,可以使用“主”存储库对整个项目进行分组


此“主”存储库还可用于跟踪您的文档文件夹。

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

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


这和你的很相似。

我通常遵循的规则是:

  • 分支并一起发布的代码进入一个存储库
  • 分支并独立发布到单独存储库中的代码
这是因为在git中,您不能对存储库的某个部分进行分支或标记(例如在Subversion中)——分支和标记始终用于整个repo


所以问题是:你总是一起发布所有的部件吗?或者它们是单独开发和发布的(甚至可能有不同的版本号)?

你考虑过吗?@Garrethyde是的,但这也需要我创建多个git,然后创建一个主git来链接所有其他git,这是好的吗?或者这种情况下的标准是什么>这是一个好规则,但是如果你使用单独的git,你会通过捆绑到一个类似git repo的大子模块中来继续捕获所有git吗我们是独立的吗?@Tim:我只是独立的。我们使用Atlassian作为我们的Git服务器,它可以让你按“项目”对repo进行分组。如果你有很多Git repo,你可能需要某种Git服务器,它可以让你对存储库进行分组,这将有助于跟踪它们。我认为大多数其他Git托管服务器都是这样的(如Gitorious、Gitlab等)也有一些“项目”的概念。将它们组合在一起是一个非常好的主意,我喜欢这样,但我如何跟踪文档文件夹?只为该文档文件夹创建一个git?在您的情况下,您可以有一个项目“MyApplication”,有四个repo:软件(Visual Studio项目)、移动(Android项目),固件(ARM项目),文档