在GitHub中,项目(可以在存储库中创建)和存储库之间的概念区别是什么?
我在SO中看到过几个类似的问题(这里,这里和这里),但没有一个解释了什么是GitHub项目,什么是GitHub存储库,以及什么时候使用它们。
如果有人能解释每个术语,并提供一个何时使用/创建每个术语的示例,我会很感激。例如,如果我有几个相互独立的原型应用程序,为了以有组织的方式管理所有这些应用程序的源代码,我应该创建什么?
在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存储库只是一个文件夹和文件可以存放的“目录” 存在。
这是我个人对这个话题的理解。
对于一个项目,我们可以通过不同的存储库进行版本控制。对于存储库,它可以管理整个项目或项目的一部分。
关于你的项目(几个独立的原型应用程序)。您可以通过一个存储库或多个存储库管理项目,区别在于:
通过一个存储库进行管理。如果其中一个应用程序被更改,整个项目(所有应用程序)将被提交到一个新版本。 由多个存储库管理。如果一个应用程序被更改,它只会影响管理该应用程序的存储库。其他存储库的版本没有更改。
GitHub最近推出了一个名为Projects的新功能。这提供了一个典型的项目管理工具的可视化板:
GitHub上记录的存储库:
存储库是GitHub最基本的元素。它们最容易 想象成一个项目的文件夹。存储库包含所有的 项目文件(包括文档),并存储每个文件的 修订历史。存储库可以有多个合作者 要么公开要么私人。
一个在GitHub上记录的项目:
GitHub上的项目板可以帮助你组织工作并确定优先级。您可以为特定的特性工作创建项目板、全面的路线图,甚至是发布清单。使用项目板,您可以灵活地创建适合您需求的定制工作流。
造成这种混乱的部分原因是新特性Projects与上面文档中术语project的重载使用相冲突。
GitHub存储库用于存储您所关心的所有文件、文件夹和其他资源。
Git项目:它也是Git资源库中的资源之一,主要用途是用一个可视化的板来管理项目。如果你在Git仓库中创建一个项目,它会创建一个类似看板的可视化板来管理项目。
通过这种方式,您可以在存储库中拥有多个项目。
事实1:项目和存储库在GitHub上一直是同义词。事实2:现在已经不是这样了。
There is a lot of confusion about Repositories and Projects. In the past both terms were used pretty much interchangeably by the users and the GitHub's very own documentation. This is reflected by some of the answers and comments here that explain the subtle differences between those terms and when the one was preferred over the other. The difference were always subtle, e.g. like the issue tracker being part of the project but not part of the repository which might be thought of as a strictly git thing etc.
现在不是了。
目前,回购和项目指的是具有独立api的不同类型的实体:
https://developer.github.com/v3/repos/ https://developer.github.com/v3/projects/
从那时起,将回购称为项目就不再正确,反之亦然。 请注意,在官方文件中它经常被混淆,不幸的是,一个已经被广泛使用的术语被选择作为新实体的名称,但事实就是如此,我们必须接受这一点。
结果是回购和项目通常被混淆,每次你读到GitHub项目时,你都不得不怀疑它真的是关于项目还是关于回购。如果他们选择了其他的名字或像“proj”这样的缩写,那么我们就可以知道他们所讨论的是一种新的实体类型,一种具有具体属性的精确对象,或者是一种一般意义上的类似于repo的投射物。
通常明确的术语是“项目委员会”。
我们可以从API中学到什么
Projects API文档中的第一个端点:
https://developer.github.com/v3/projects/#list-repository-projects
描述为:列出存储库项目。这意味着一个存储库可以有许多项目。所以这两个不可能是同一个意思。如果项目被禁用,则包含Response:
{
"message": "Projects are disabled for this repo",
"documentation_url": "https://developer.github.com/v3"
}
这意味着一些回购可以禁用项目。同样,当回购可以禁用项目时,这些不可能是同一件事。
还有其他一些有趣的结局:
创建一个存储库项目- POST /repos/:owner/:repo/projects 创建一个组织项目POST /orgs/:org/projects
但是没有:
创建用户的项目—POST /users/:user/projects
这就引出了另一个区别:
1. 存储库可以属于用户或组织2。项目可以属于存储库或组织
或者,更重要的是:
1. 项目可以属于存储库,但不是其他方式2。项目可以属于组织,但不属于用户3。存储库可以属于组织,也可以属于用户
参见:
https://help.github.com/articles/about-project-boards/
我知道这很让人困惑。我试着尽可能精确地解释。
关于git的词汇, Project是存放实际内容(文件)的文件夹。 而Repository (repo)是一个文件夹,git在其中保存了项目文件夹中所做的每个更改的记录。 但在一般意义上,这两者可以被认为是相同的。 项目=存储库
概念上的差异在我的理解中是
一个项目可以包含多个相互独立的回购,同时一个回购可以包含多个项目。 存储库只是代码的存储场所,而项目可以是某个特性的任务集合。
明白吗?一个大的回购可以有很多项目同时由不同的人进行(很多不同的功能被添加到一个单体中),一个大的项目可能有很多小的回购,这些小的回购是独立的,但它们是同一个项目的一部分,彼此交互-微服务?这是个人对你想做什么的看法。
我认为回购(存储)vs项目(任务)是主要的区别-如果我错了,请让我知道/解释!谢谢。