GitHub中的Project vs Repository

car*_*rra 116 git version-control github repository

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

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

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

rsp*_*rsp 107

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

事实2:现在不再是这样了.

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

不再.

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

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

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

通常明确的术语是"项目委员会".

我们可以从API中学到什么

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

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

{
  "message": "Projects are disabled for this repo",
  "documentation_url": "https://developer.github.com/v3"
}
Run Code Online (Sandbox Code Playgroud)

这意味着一些回购可以禁用项目.再一次,当回购可以禁用项目时,那些不一样.

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

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

没有:

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

这导致我们另一个不同:

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

或者,更重要的是:

1.项目可以属于存储库但不是相反的方式
2.项目可以属于组织但不
属于用户3.存储库可以属于组织和用户

也可以看看:

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

  • 在 Atlassian 的 Bitbucket 中,您可以创建包含一系列相关存储库的项目。Github有这个组织功能吗?我原以为 Github Projects 会是这样的东西,但显然不是。我似乎不知道如何在 Github 上实现这个组织。我“非常”习惯 Bitbucket,所以它可能只是一个学习曲线。 (8认同)
  • 在某种程度上,如果一个项目可以有多个存储库,对我来说会更有意义。我的印象是 GitHub 注意到它已经过时了,而不是进行彻底的重新设计,而是选择制定一个解决方法并将其作为一件好东西出售。顺便问一下,现在 GitHub 的所有者是谁?也许答案可以提供一些关于为什么会发生这种情况的线索。只是大声思考。 (4认同)
  • 我来到这个 SO 问题假设回购是在项目中创建的,而不是相反。现在我完全糊涂了。我的意思是,如果你开发一个新的操作系统,你不能让内核、编译器、工具等的 repos 属于操作系统的“主项目”吗?如果你想做这样的事情,你是否应该创建一个组织帐户,以便“组织”实际上是“主项目”?我不明白。 (2认同)

oso*_*kit 68

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

项目

GitHub上记录的存储库:

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

GitHub上记录的项目:

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

令人困惑的部分原因是新功能Projects与上述文档中术语项目的重载使用冲突.

  • 这是如何被选为可接受的答案的?只需复制粘贴所描述的内容即可。OP 可以阅读它,但人们想通过简单的例子来了解。 (33认同)

小智 12

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

Git项目:它也是Git存储库中的资源之一,它的主要用途是使用可视面板管理项目。如果您在Git Repository中创建一个项目,它将创建一个看板(如看板)来管理该项目。

这样,您可以在存储库中拥有多个项目。


nhu*_*uvy 9

通常,在 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 的模块 + 主存储库)

我完全同意@Brandon Ibbotson评论

GitHub 存储库只是一个可以存在文件夹和文件的“目录”。

  • 实际上,使用 Zend Framework 的示例是完全错误的!根据 GitHub 的命名法,有一个名为“zendframework”的组织拥有许多存储库,其中一个也称为“zendframework”,一个用于框架的每个模块。 (3认同)
  • 2017 年 11 月 9 日:**1 存储库 = 许多项目** 的示例返回 404。 (3认同)
  • 就 GitHub 而言,这个答案与上面其他更流行的答案相冲突。 (2认同)

Jer*_*emy 6

我理解的概念差异是

  • 一个项目可以包含许多相互独立的 repo,而同时一个 repo 可能包含许多项目。
  • 存储库只是代码的存储位置,而项目可以是特定功能的任务集合。

那有意义吗?一个大的 repo 可以有很多项目同时被不同的人处理(很多不同的特性被添加到一个整体中),一个大的项目可能有许多小 repo,它们是独立的,但属于同一个项目的一部分,它们与每个人交互其他 - 微服务?它是对你想做的事情的个人看法。

我认为回购(存储)与项目(任务)是主要区别 - 如果我错了,请告诉我/解释!谢谢。