GitHub项目和里程碑之间有什么区别/关系?

250
近期更新的GitHub增加了称为“项目”(Projects)的功能,由于我没有使用过像Jira或Trello等“项目跟踪工具”(嘿,至少我注意到了相似之处),所以可以请任何人详细说明GitHub的“里程碑”(Milestones)和新“项目”(Projects)之间的(主要)区别吗?
如果我理解正确,“里程碑”是将问题组织成比整个“项目”更小的“子项目”的一种方式(在我的世界观中,该项目由“存储库”表示)。当所有问题都完成/关闭时,里程碑可以被视为“完成”。
新引入的“项目”也是将问题组织成“小于存储库”的“子项目”的一种方式(尽管称为“项目”)。我理解这个流程应该与“仅有”里程碑相比略有不同,并且更加精细。
那么,“项目”是补充“里程碑”(还是“里程碑”现在补充“项目”?),还是我应该将“项目”视为“里程碑”的“替代品”?
“项目”实际上落在“存储库[-里程碑]-问题”层次结构中的哪个位置?

遗憾的是,GitHub有关项目介绍的博客文章没有提及任何关系 (https://github.com/blog/2256-a-whole-new-github-universe-announcing-new-tools-forums-and-features)。

我有点感觉它们之间存在某种关系,但说不清楚。


我投票关闭此问题,因为它与编程无关。 - double-beep
64
由于帮助中心明确说明:“[...]如果你的问题通常涉及程序员常用的[...]软件工具;并且是一个实际可回答的与软件开发相关独特问题...那么你就来对地方提问了!”我认为没有任何理由不这样做。 - Smuuf
@double-beep:希望你仍然沉浸在你的精英荣耀中。 - undefined
5个回答

223
我也有同样的疑问,以下是我的理解:
首先,让我们回顾一下主要的相似点和差异点:
- 问题可以属于多个项目,但只能属于一个里程碑。 - 项目从不“完成”。没有进度条或截止日期。项目可以关闭,但进度条被隐藏在项目菜单中,需要勾选“跟踪项目进度”,并且没有进度百分比计算。(@Sheen指出) - 与之相反,里程碑拥有所有这些特性,但缺乏任何形式的组织。问题要么属于里程碑,要么不属于。(如@Nick McCurdy所指出的那样,它们可以进行排序) - 问题可以按里程碑进行过滤,但无法按项目进行过滤。现在,问题可以按项目和里程碑进行过滤。(如@cmonkey所指出的那样) - 项目可以包含“注释”(可以转换为问题),因此不会用模糊的想法污染问题跟踪器。 - 一个项目可以跨越多个里程碑,而一个里程碑可以包含不同项目的部分。 - 组织也可以有项目。这些项目可以包括来自组织中任何存储库的票据,这使其非常有用。
所以,我认为,项目是一种完全独立的方式,用于在更高层次上可视化和组织您的工作(例如“项目管理”,多个团队,多个存储库等),而里程碑是一种以更基本的层次组织您的截止日期和发布的方式(例如“发布管理”,“版本”等)。有了这个想法,问题只属于一个里程碑(它只发布或推送到生产一次),但可以是不同项目的一部分。
我相信还有其他方法来看待这个问题,我很想听听其他人的意见。
2017年12月编辑

前段时间,在使用Milestones和Projects工具一年多后,我意识到还有一个重要的方面被我完全忽视了。

  • Milestones是Scrum方法论的工具。里程碑适用于设定时间框架并批量处理问题的迭代过程。
  • Projects是Kanban方法论的工具。项目适用于持续交付和稳定的工作流。

4
谢谢您提供的总结,我自己一直在思考这个问题。我打算远离整个项目事物,因为它对我的项目没有太大的适用性。对我来说,Github 项目似乎是“颠倒”的,因为我通常有多个代码库针对一个项目,而不是相反的情况。 - KEK
1
在GitHub Enterprise中,我使用一个与同名存储库的组织,该存储库没有代码,但用于集中管理所有项目及其问题。针对保存代码的存储库的拉取请求会简要提及中央存储库的问题。 - yegeniy
1
我认为里程碑主要适用于已知大部分问题的接下来的几周/几个月,而项目则适用于长达一年的几个月,其中并非所有问题都已知。两者之间更紧密的集成可以减少重叠,这可能真的很值得。 - Trilarion
4
如果使用列自动化预设,项目现在会有进度条。 - emlai
这太棒了。然而,我仍然不清楚是否应该同时使用里程碑和项目,还是只使用其中之一。你认为呢? - chrisdembia

64

我的观点:

  • 一个项目关乎于流程人员
  • 一个里程碑关乎于产品

通过一个项目可以更好地了解团队中人员所使用的流程。它更合适被称为“工作流”或“流程”。与创建一个新的里程碑相比,创建一个新的项目需要更多的开销。因此,您只有在团队中出现新的流程时才需要创建新的项目:必须选择、配置和排序Lane 。它们在每个项目中也可以非常不同。我想到了丰田最初使用看板的用途:管理人员和他们的工作负载。

一个项目回答了问题:“我们目前正在做什么?”

两个很好的项目例子是软件开发和博客写作。对于每个项目,配置都支持不同的组内人员流程;他们如何协作和审查事项。

相比之下,所有的里程碑都是相同的。它们是一系列必须全部完成的任务列表,以便将工作产品视为完整。可选地,可以设置截止日期,这只是提供提醒,但不会改变里程碑的功能。

一个里程碑回答了问题:“还剩下什么来完成这个产品?”


23

里程碑是标记和分组预计在某个时间点交付的票据的标签。您可以从问题页面访问的里程碑页面清楚地了解到这一点-您可以看到特定里程碑完成的票据百分比和截止日期。您还可以按截止日期对里程碑进行排序,并在特定里程碑内优先处理票据。

这里强调交付日期和跟踪进度。

项目则以看板形式实现,带有一些附加功能。您可以指定多列(泳道-如下面的@Doug所说,暂不支持泳道)来创建简单的工作流程。然后,您可以从一个或多个存储库中添加票据,对其进行优先级排序,然后将它们从一列移动到另一列,因为它们正在被处理。例如,您可以有“积压”,“进行中”,“审核中”,“测试中”和“完成”列,并将票据从左到右移动,或者从右到左移动,如果有一个有缺陷的票据从“测试中”反弹回“积压”。

这里强调组织和管理工作。

然后,如何组织和分配这项工作就由您决定了。您可以为每个里程碑创建一个项目,或将多个里程碑合并到一个项目中,或将里程碑分成较短的sprints。您还可以拥有几个项目,涵盖产品开发的不同方面,例如,一个项目针对开发人员,另一个项目针对测试人员。


Swimlanes在看板中不是列,而是行。Github目前不支持将Swimlanes作为一流特性。 - Doug
所以,换句话说,项目的概念与Jira的概念完全相同,它们都有工作流和列。 - undefined

18

项目中的一个好处是它们比里程碑更自由。您可以在其中随意添加注释并链接问题,以任何适合您的方式进行组织。它们非常适合记录想法、制定路线图以及列出资源和依赖项。过去我曾经使用问题和维基来完成相同的任务,但我发现这两种方式都太正式和交易性(即开销较高)。


+1 我认为,里程碑反映了组织在项目生命周期中所做的承诺,而项目委员会可能包括团队成员尚未准备完全接受的半成品想法。 - tim.rohrer

16

在GitHub上:

  • 项目是一个有开始但没有结束的过程。
  • 里程碑是强调结束时间的过程。

因此,使用里程碑将项目分成许多具有结束时间的阶段是正确的。

我用它来这样:

  • 组织项目用于组织涉及多个存储库的过程。
  • 存储库项目用于组织长期分支(例如develop分支,自定义分支)的迭代过程。
  • 里程碑是一个迭代阶段。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接