背景

我厂的开发流程通常都是基于 GitHub 的。在 GitHub 上 review 代码,也是我日常工作的重要组成部分。对我来说,在 code review 过程中最讨厌的莫过于,我在 pull request 或 commit 下面评论或 @ 人,往往石沉大海,没有回音。我事后追问当事人,他们的回复往往是 “不知道你 @ 我了呀~”。

这让我非常恼火。所以,我决定写篇文档给所有人看,避免他们漏看重要的 GitHub 消息。此后在 GitHub 不回复我的人,差不多也可以绝交了罢!

GitHub 的通知机制

通知的类型和方式

在两种情况下,我们会收到 GitHub 的通知。

  • 我关注的(Watching):当我关注了某个项目之后,相当于订阅了这个项目的所有更新,即这个项目的新 release、新 issue、新 PR 及所有讨论都会通知我。

  • 我参与的(Participating):当我参与到某个 issue、PR 或 commit 的讨论,或被别人 @ 后,我都会持续收到这个讨论的后续更新。

后面一种情况似乎对我更加重要一些。如果不需要密切跟进某个项目,我应该避免关注它。

另外,GitHub 会通过以下两种方式来通知我们:

  • 站内信(Web):当我登录 GitHub 网站时,如果有新消息,在导航栏会看到一个小蓝点。点进去就可以看到详细通知。

  • 电子邮件(Email):通知会直接发送到我的邮箱,而且我直接回复邮件的效果相当于登录到相关页面回复,非常方便。

可见,前者是被动方式,提醒能力太弱。而后者是主动推送,时效性好,但我需要注意的就是控制消息密度,避免被轰炸。因此,接下来,我们来了解一下 GitHub 的 “自动关注” 功能。

自动关注

不错过重要的消息,首先意味着不能被无关紧要的消息湮没。如果你经常收到大量的 GitHub 消息,那你可能就全都不看了。因此,我们需要关掉 “自动关注” 功能。

登录 GitHub 通知中心页面,即可关闭这个功能:

为什么要关它?这个功能很有意思,每当你获得了一个 repo 的 push 权限之后,GitHub 就会帮你自动关注这个 repo。这在开源社区是很有用的,因为当你获得了这个权限时,往往意味着你成为了这个 repo 的核心维护者,你确实需要第一时间掌握这个项目的一举一动。

但这对于公司内部项目就不那么合适了。比如我们的主站项目是一个私有 repo,几乎公司内的每位工程师都会 fork 它;同时出于协作的需要,每个 fork 都需要向所有工程师开放读写权限。因此,你将自动关注这近百个 repo,而这些 repo 的任何风吹草动都会通知你,即使你并未真正在其它同事的 fork 上工作。

总之,为了避免无关消息对你的轰炸,请关掉自动关注功能。你可能已经关注了一堆无关紧要的 fork 了,请记得在你的 关注列表页面 逐一取消。(如果你不是核心管理员,建议你把主站项目的 upstream 也取消关注。)

个人设置

了解完 GitHub 的特性之后,我们就可以针对性地做出配置和选择了。

设定 Email

正常情况下,每个人在工作时间都会开着自己的工作邮箱。那么首先,需要确保 GitHub 的消息是发到这个邮箱的。由于每个人的 GitHub 账号往往并非是用工作邮箱注册的,我们需要把邮箱搞对。

登录 GitHub 的邮箱设置页面,添加自己的工作邮箱。随后工作邮箱会收到一封验证邮件,完成验证之后,你的 GitHub 账号就绑定了两个邮箱。

(并不需要为把这个工作邮箱设置为 “primary”,只要验证通过就可以了。)

到这里我们就做好 Email 的准备工作。

通知中心

接下来,我们进入 GitHub 通知中心,为两种不同类型的通知选择通知方式。请确保至少第一个 “Email” 是被选中的:

接下来,选择接收邮件通知的邮箱。选择我们刚刚添加的工作邮箱,保存。

(这里的邮箱设置只会影响消息的接收,不会影响账号身份。)

好了,大功告成。从此以后,所有重要的 GitHub 消息都会发送到你的工作邮箱。最后,再告诉你几个小技巧,相信你用得上。

减少干扰

取消关注某个 Repo

前面已经提到过 你的关注列表,在那里,你可以随时清理不再重要的项目。同时,进入任何项目的页面,在右上角都可以选择对它的关注方式。

“Not watching” 意味着取消关注,你将不会收到与你无关的通知。而与你有关的(你发起的、主动参与的或被 @ 的)讨论有新回复,你还是会收到通知的。

请注意不要选择 “Ignoring”,那意味着你连重要的消息也收不到了。

取消关注某个讨论

当某个讨论已经没你什么事了,但仍然不断有后续消息涌进来,那就果断屏蔽它吧。从消息邮件中的链接点到网页,找到如下所示的 “取消订阅” 的按钮,即可取消关注这个讨论。

锁定某个讨论

当某个 issue 或 PR 已经没有继续讨论的必要的,你可以锁定它——当然前提是你得是这个 repo 的管理员。

屏蔽某个人

如果你遇到了无聊的人总是骚扰你,可以到它的用户页面,屏蔽并举报。

结语

相信看到这里,你已经对 GitHub 的通知机制十分了解了吧,并且应该可以灵活配置 GitHub 消息的接收方式了。

好吧,就这样吧。如果以后还是不回复我,绝交。

参考资料(戳这里):

>  https://github.com/cssmagic/blog/issues/49

如何正确接收 GitHub 的消息邮件的更多相关文章

  1. 调用 SSPI 失败,请参见内部异常。接收到的消息异常,或格式不正确。

    完整异常信息: System.Security.Authentication.AuthenticationException: 调用 SSPI 失败,请参见内部异常. ---> System.C ...

  2. Provider:SSL提供程序,error:0 - 接收到的消息异常,或格式不正确

    引自 :http://www.cnblogs.com/liuguozhu2015/p/3413496.html 非常感谢这位同学 我用笔记本的sql客户端去连服务器,正常连接. 在页面中连接时,直接导 ...

  3. 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确。)

    之前做好的asp.net部署后,发现 访问数据库时: 异常:已捕获: "已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 ...

  4. 《C#微信开发系列(4)-接收 / 返回文本消息》

    4.0接收 / 返回文本消息 ①接收/返回文本消息原理说明 当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上,着手开发之前先行阅读微信公众平台接收普通消息 ...

  5. Android OnTouchListener 导致 OnClickListener 接收不到消息 无反应

    原因是onTouch返回了true把消息给消耗掉了,所以OnClickListener接收不到消息. 解决办法:onTouch返回false

  6. xmpp关于后台挂起的消息接收,后台消息推送,本地发送通知

    想问下,在xmpp即时通讯的项目中,我程序如果挂起了,后台有消息过来,我这边的推送不过来,所以我的通知就会收不到消息,当我重新唤醒应用的时候,他才会接收到通知,消息就会推送过来,我在plist哪里设置 ...

  7. PHP-微信公众平台开发-接收用户输入消息类型并响应

    原文:PHP-微信公众平台开发-接收用户输入消息类型并响应 <?php // 该代码块用于接收用户消息,根据用户输入的消息类型进行判断,文本,图片,视频,位置,链接,语音等,并取得值,处理后给予 ...

  8. MySQL 笔记整理(17) --如何正确地显示随机消息?

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 17) --如何正确地显示随机消息? 如果有这么一个英语单词表,需要每次 ...

  9. 用过企业微信APP 后,微信接收不到消息,解决方案

    用过企业微信APP 后,微信接收不到消息的,怎么办? 请打开企业微信,找到:我----设置----新消息通知----仅在企业微信中接收消息

随机推荐

  1. NeHe OpenGL教程 第四十六课:全屏反走样

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. Win32API界面库 - Project wheels 工程基础部分完成

    离上次发博文过去了好久,先是要忙一个机器人的项目,然后就是部门的事情和考试周复习,然后就到了考试周,趁着复习的间隙,拾起了寒假时候抄的界面库,修掉了从前的bug. bug1 控件显示问题 当初抄这个库 ...

  3. 怎样避免 i f 判断过多,全复杂度较高,代码不美观的问题?

    没有什么好的设计方式可以实现,减少一个方法中出现几十个 if 匹配的判断? 现在要做一个判断客户是否通过验证的接口. 一共有30多个验证规则的判断, 每个规则对应一个规则号: 这个接口只需要返回是否验 ...

  4. css实现绝对定位元素居中

    前端我们时常需要封装一些弹出框,这些弹出框大小都不能确定,多半是用js实现居中. 现在有了css3可以不用js了. .box{ background-color: blueviolet; width: ...

  5. 28. Triangle && Pascal's Triangle && Pascal's Triangle II

    Triangle Given a triangle, find the minimum path sum from top to bottom. Each step you may move to a ...

  6. IQ推理:红眼睛和蓝眼睛

    题目:  有一个很古老的村子,这个村子的人分两种,红眼睛和蓝眼睛,这两种人并没有什么不同,小孩在没生出来之前,没人知道他是什么颜色的眼睛,这个村子中间有一个广 场,是村民们聚集的地方,现在这个村子只有 ...

  7. 洛谷P3366 【模板】最小生成树

    P3366 [模板]最小生成树 319通过 791提交 题目提供者HansBug 标签 难度普及- 提交  讨论  题解 最新讨论 里面没有要输出orz的测试点 如果你用Prim写了半天都是W- 题目 ...

  8. js动画性能提升笔记

    JavaScript动画的性能并不亚于CSS动画.因此,如果使用了现代的动画库,例如Velocity,那么动画引擎的性能将不再是app的瓶颈,构成瓶颈的只有代码. 网络性能相关 动画是浏览器运行中资源 ...

  9. 【Tree 3】树形结构数据加载的思考

    前面两篇文章,分别介绍了使用递归和非递归算法加载树形结构数据的方式,本篇文章,则是自己闲下来的时候,进行的一点小思考. 一.什么地方会用到树形结构 刚开始一看到这种结构的时候,最先是想到了家谱.家谱就 ...

  10. jQuery triger与trigerHandler的区别

    trigger(event, [data]) 与 triggerHandler(event, [data]) 都是用于触发一个事件. 其两者的区别在于,如果触发的事件是有浏览器默认行为的,trigge ...