GitHub中的Project vs Repository

时间:2016-11-09 14:53:18

标签: git github version-control repository

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

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

如果有人可以解释每个术语,并且提供何时使用/创建每个术语的示例,我将不胜感激。例如,如果我有几个原型应用程序,它们彼此独立,我为了以有组织的方式管理所有这些应用程序的源代码,我创建了什么?

7 个答案:

答案 0 :(得分:64)

事实1:项目和存储库在GitHub上始终是同义词。

事实2:情况不再如此。

关于存储库和项目存在很多混淆。在过去,用户和GitHub自己的文档几乎可以互换使用这两个术语。这反映在这里的一些答案和评论中,这些答案和评论解释了这些术语之间的细微差别,以及何时优先于另一个术语。差异总是很微妙,例如就像问题跟踪器是项目的一部分,但不是存储库的一部分,可能被认为是一个严格的git事物等。

不再。

目前,回购和项目是指具有单独的API 不同类型的实体

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

结果是回购和项目通常会混淆,每当您阅读GitHub项目时,您都不得不怀疑它是否真的与项目或回购相关。如果他们选择了其他名称或缩写,例如" proj"那么我们就可以知道所讨论的是新类型的实体,具有混凝土属性的精确对象,或者一般性的回购 - 类似于项目式的东西。

通常明确无误的术语是"项目板"

我们可以从API中学到什么

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

描述为:列出存储库项目。这意味着存储库可以包含许多项目。所以那两个不能代表同一件事。它包括如果项目被禁用则响应

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

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

还有其他一些有趣的终点:

  • 创建存储库项目 - POST /repos/:owner/:repo/projects
  • 创建组织项目 - POST /orgs/:org/projects

没有

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

这引出了另一个不同之处:

<强> 1。存储库可以属于用户或组织。项目可以属于存储库或组织

或者更重要的是:

<强> 1。项目可以属于存储库,但不是相反的方式。项目可以属于组织,但不属于用户。存储库可以属于组织和用户

另见:

我知道这令人困惑。我试着尽可能准确地解释它。

答案 1 :(得分:44)

GitHub最近推出了一项名为Projects的新功能。这提供了许多项目管理工具的典型可视板:

Project

GitHub上记载的Repository

  

存储库是GitHub最基本的元素。他们最容易   想象一下作为一个项目的文件夹。存储库包含所有   项目文件(包括文档),并存储每个文件   修订记录。存储库可以有多个协作者,可以   是公共的还是私人的。

GitHub上记载的Project

  

GitHub上的项目委员会可以帮助您组织工作并确定其优先级。您可以为特定功能工作,综合路线图甚至发布清单创建项目板。通过项目板,您可以灵活地创建满足您需求的自定义工作流程。

部分原因是新功能Projects与上述文档中项目一词的重载使用冲突。

答案 2 :(得分:7)

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

Git项目:它也是Git存储库中的资源之一,它的主要用途是使用可视化板来管理项目。如果你在Git Repository中创建一个项目,它就会创建一个像看板一样的可视板来管理项目。

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

答案 3 :(得分:4)

一般情况下,在GitHub上, 1个存储库= 1个项目。例如:https://github.com/spring-projects/spring-boot。但这不是一个严格的规则。

1个存储库=许多项目。例如:https://github.com/donhuvy/java_examples

1个项目=许多存储库。例如:https://github.com/zendframework/zendframework(1个名为Zend Framework 3的项目有61 + 1 = 62个存储库,不相信?让Zend Frameworks&#39; modules + main repository)

我完全同意@Brandon Ibbotson&#39; comment

  

GitHub存储库只是一个&#34;目录&#34;文件夹和文件可以在哪里   存在。

答案 4 :(得分:2)

在我的理解上,一个项目可以包含许多回购并且彼此独立,而一个回购可能包含许多项目,这在概念上是不同的。回购只是代码存储的地方,而项目则是特定功能的任务的集合。

这有意义吗?大型仓库可以有多个项目同时由不同的人处理(很多不同的功能被添加到整体中),大型项目可能有许多小型仓库,这些小型仓库是分开的,但属于同一项目的一部分,可以与每个仓库交互其他-微服务?它是您要做什么的个人看法。我认为回购(存储)与项目(任务)是主要区别-如果我错了,请让我知道/解释!谢谢。

答案 5 :(得分:1)

关于git词汇, 项目是实际内容(文件)所在的文件夹。 而 Repository(repo)是该文件夹,其中git记录了 project 文件夹中所做的每个更改。 但是从一般意义上讲,这两个可以视为相同。 项目=存储库

答案 6 :(得分:0)

这是我个人对该主题的理解。

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

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

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

  2. 由多个存储库管理。如果更改了一个应用程序,它将只影响管理应用程序的存储库。其他存储库的版本未更改。