在GitHub中,项目(可以在存储库中创建)和存储库之间的概念区别是什么?
我在SO中看到过几个类似的问题(在这里, 在这里和在这里),但没有一个解释了什么是GitHub项目,什么是GitHub存储库以及何时使用它们中的每一个。
如果有人能解释每个术语,并提供一个何时使用/创建每个术语的示例,我会很感激。例如,如果我有几个相互独立的原型应用程序,为了以有组织的方式管理所有这些应用程序的源代码,我应该创建什么?
一般来说,在GitHub上,1个存储库= 1个项目。例如:https://github.com/spring-projects/spring-boot。但这并不是一个严格的规则。
1个存储库=许多项目。例如:https://github.com/donhuvy/java_examples
1个项目=许多存储库。例如:https://github.com/zendframework/zendframework(一个名为Zend Framework 3的项目有61 + 1 = 62个存储库,不相信吗?计算Zend框架的模块+主存储库)
我完全同意@Brandon Ibbotson的评论:
GitHub仓库只是一个文件夹和文件可以存放的“目录” 存在。< / p >
这是我个人对这个话题的理解。
对于一个项目,我们可以通过不同的存储库进行版本控制。对于存储库,它可以管理整个项目或项目的一部分。
关于你的项目(几个独立的原型应用程序)。您可以通过一个存储库或多个存储库管理项目,区别在于:
通过一个存储库进行管理。如果其中一个应用程序被更改,整个项目(所有应用程序)将被提交到一个新版本。
由多个存储库管理。如果一个应用程序被更改,它只会影响管理该应用程序的存储库。其他存储库的版本没有更改。
GitHub最近引入了一个名为项目的新功能。这提供了一个典型的项目管理工具的可视化板:
在GitHub上记录的存储库:
仓库是GitHub最基本的元素。它们最容易 想象成一个项目的文件夹。存储库包含所有的 项目文件(包括文档),并存储每个文件的 修订历史。存储库可以有多个合作者
在GitHub上记录的项目:
GitHub上的项目板可以帮助你组织工作并确定优先级。您可以为特定的特性工作创建项目板、全面的路线图,甚至是发布清单。使用项目板,您可以灵活地创建适合您需求的定制工作流。
部分混淆是新特性Projects与上面文档中术语项目的重载使用冲突。
GitHub存储库用于存储您所关心的所有文件、文件夹和其他资源。
Git项目:它也是Git资源库中的资源之一,主要用途是用一个可视化的板来管理项目。如果你在Git仓库中创建一个项目,它会创建一个类似看板的可视化板来管理项目。
通过这种方式,您可以在存储库中拥有多个项目。
关于存储库和项目有很多困惑。在过去,用户和GitHub自己的文档几乎可以互换使用这两个术语。这里的一些回答和评论反映了这一点,这些回答和评论解释了这些术语之间的微妙差异,以及什么时候一个比另一个更受欢迎。区别总是很细微的,例如,问题跟踪器是项目的一部分,而不是存储库的一部分,这可能被认为是严格的git的东西等等。
目前repo和projects引用不同种类的实体,具有单独的api:
从那时起,将回购称为项目就不再正确,反之亦然。 请注意,它在官方文件中经常被混淆,不幸的是,一个已经广泛使用的术语被选为新实体的名称,但事实就是如此,我们必须接受这一点
结果是回购和项目通常被混淆,每次你读到GitHub项目时,你都不得不怀疑它真的是关于项目还是关于回购。如果他们选择了其他的名字或像“proj”这样的缩写,那么我们就可以知道他们所讨论的是一种新的实体类型,一种具有具体属性的精确对象,或者是一种一般意义上的类似于repo的投射物。
通常明确的术语是“项目委员会”。
Projects API文档中的第一个端点:
描述为:列出存储库项目。这意味着一个存储库可以有许多项目。所以这两个不可能是同一个意思。它包括如果项目已禁用,则响应:
{ "message": "Projects are disabled for this repo", "documentation_url": "https://developer.github.com/v3" }
这意味着一些回购可以禁用项目。同样,当回购可以禁用项目时,这些不可能是同一件事。
还有其他一些有趣的结局:
但是有没有:
POST /users/:user/projects
这就引出了另一个区别:
1. 存储库可以属于用户,也可以属于组织2。项目可以属于存储库或组织
或者,更重要的是:
1. 项目可以属于存储库,但不能属于存储库2。3.项目只能属于组织,不能属于用户。存储库可以属于组织,也可以属于用户
参见:
我知道这很让人困惑。我试着尽可能精确地解释。
a 项目是实际内容(文件)所在的文件夹。 而库(回购)是git保存在项目文件夹中的每一个更改记录的文件夹。 但在一般意义上,这两者可以被认为是相同的。 项目=存储库
概念上的差异在我的理解中是
明白吗?一个大的回购可以有很多项目同时由不同的人进行(很多不同的功能被添加到一个单体中),一个大的项目可能有很多小的回购,这些小的回购是独立的,但它们是同一个项目的一部分,彼此交互-微服务?这是个人对你想做什么的看法。
我认为回购(存储)vs项目(任务)是主要的区别-如果我错了,请让我知道/解释!谢谢。
读了对这个问题的回答,我得出的结论是,这两个术语是可以互换的,没有人能够以一种清晰易懂的方式区分这两个术语!