GitHub中的项目vs库

在GitHub中,项目(可以在存储库中创建)和存储库之间的概念区别是什么?

我在SO中看到过几个类似的问题(在这里在这里在这里),但没有一个解释了什么是GitHub项目,什么是GitHub存储库以及何时使用它们中的每一个。

如果有人能解释每个术语,并提供一个何时使用/创建每个术语的示例,我会很感激。例如,如果我有几个相互独立的原型应用程序,为了以有组织的方式管理所有这些应用程序的源代码,我应该创建什么?

196382 次浏览

一般来说,在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 >

这是我个人对这个话题的理解。

对于一个项目,我们可以通过不同的存储库进行版本控制。对于存储库,它可以管理整个项目或项目的一部分。

关于你的项目(几个独立的原型应用程序)。您可以通过一个存储库或多个存储库管理项目,区别在于:

  1. 通过一个存储库进行管理。如果其中一个应用程序被更改,整个项目(所有应用程序)将被提交到一个新版本。

  2. 由多个存储库管理。如果一个应用程序被更改,它只会影响管理该应用程序的存储库。其他存储库的版本没有更改。

GitHub最近引入了一个名为项目的新功能。这提供了一个典型的项目管理工具的可视化板:

项目

在GitHub上记录的存储库:

仓库是GitHub最基本的元素。它们最容易 想象成一个项目的文件夹。存储库包含所有的 项目文件(包括文档),并存储每个文件的 修订历史。存储库可以有多个合作者

在GitHub上记录的项目:

GitHub上的项目板可以帮助你组织工作并确定优先级。您可以为特定的特性工作创建项目板、全面的路线图,甚至是发布清单。使用项目板,您可以灵活地创建适合您需求的定制工作流。

部分混淆是新特性Projects与上面文档中术语项目的重载使用冲突。

GitHub存储库用于存储您所关心的所有文件、文件夹和其他资源。

Git项目:它也是Git资源库中的资源之一,主要用途是用一个可视化的板来管理项目。如果你在Git仓库中创建一个项目,它会创建一个类似看板的可视化板来管理项目。

通过这种方式,您可以在存储库中拥有多个项目。

事实1:项目和存储库在GitHub上一直是同义词。事实2:现在不再是这样了。

关于存储库和项目有很多困惑。在过去,用户和GitHub自己的文档几乎可以互换使用这两个术语。这里的一些回答和评论反映了这一点,这些回答和评论解释了这些术语之间的微妙差异,以及什么时候一个比另一个更受欢迎。区别总是很细微的,例如,问题跟踪器是项目的一部分,而不是存储库的一部分,这可能被认为是严格的git的东西等等。

现在不是了。

目前repo和projects引用不同种类的实体,具有单独的api:

从那时起,将回购称为项目就不再正确,反之亦然。 请注意,它在官方文件中经常被混淆,不幸的是,一个已经广泛使用的术语被选为新实体的名称,但事实就是如此,我们必须接受这一点

结果是回购和项目通常被混淆,每次你读到GitHub项目时,你都不得不怀疑它真的是关于项目还是关于回购。如果他们选择了其他的名字或像“proj”这样的缩写,那么我们就可以知道他们所讨论的是一种新的实体类型,一种具有具体属性的精确对象,或者是一种一般意义上的类似于repo的投射物。

通常明确的术语是“项目委员会”

我们可以从API中学到什么

Projects API文档中的第一个端点:

描述为:列出存储库项目。这意味着一个存储库可以有许多项目。所以这两个不可能是同一个意思。它包括如果项目已禁用,则响应:

{
"message": "Projects are disabled for this repo",
"documentation_url": "https://developer.github.com/v3"
}

这意味着一些回购可以禁用项目。同样,当回购可以禁用项目时,这些不可能是同一件事。

还有其他一些有趣的结局:

  • __abc1 - __abc0
  • __abc1 - __abc0

但是有没有:

  • 创建用户的项目 - POST /users/:user/projects . txt

这就引出了另一个区别:

1. 存储库可以属于用户,也可以属于组织
2。项目可以属于存储库或组织

或者,更重要的是:

1. 项目可以属于存储库,但不能属于存储库
2。
3.项目只能属于组织,不能属于用户。存储库可以属于组织,也可以属于用户

参见:

我知道这很让人困惑。我试着尽可能精确地解释。

关于git词汇,

a 项目是实际内容(文件)所在的文件夹。 而库(回购)是git保存在项目文件夹中的每一个更改记录的文件夹。 但在一般意义上,这两者可以被认为是相同的。 项目=存储库

概念上的差异在我的理解中是

  • 一个项目可以包含多个相互独立的回购,同时一个回购可以包含多个项目。
  • 存储库只是代码的存储场所,而项目可以是某个特性的任务集合。

明白吗?一个大的回购可以有很多项目同时由不同的人进行(很多不同的功能被添加到一个单体中),一个大的项目可能有很多小的回购,这些小的回购是独立的,但它们是同一个项目的一部分,彼此交互-微服务?这是个人对你想做什么的看法。

我认为回购(存储)vs项目(任务)是主要的区别-如果我错了,请让我知道/解释!谢谢。

读了对这个问题的回答,我得出的结论是,这两个术语是可以互换的,没有人能够以一种清晰易懂的方式区分这两个术语!