如何给 github.com 用户留言

513

需要关于GitHub使用的帮助。我想知道是否有一种方法可以与github.com用户进行通信,即在仅提供用户名/ID的情况下向用户写消息?GitHub是否具备此社交功能?


10
回答这个问题(因为现在它已经关闭):你可以开一个 Issue,希望仓库所有者回答你。 - heltonbiker
1
请参阅有没有办法在Github上联系用户?,该问题是WebApps.SE上的主题。 - chharvey
我觉得这更像是一个SuperUser上的问题。 - Dirk Horsten
9
为了保护隐私,Github用户可以前往“设置->邮件”,勾选“保持我的电子邮件地址私人”,以避免个人电子邮件在任何答案中显示。然后,他们必须使用git config user.emailgit config --global user.email命令将本地git电子邮件地址设置为Github的私人电子邮件地址(<用户名>@users.noreply.github.com)。从那时起,他们所有的提交都将只包含私人的“noreply”电子邮件地址。请注意,任何之前的提交/本地存储库提交中设置的个人电子邮件地址仍将显示。 - leanne
当前官方问题跟踪器上的功能请求:https://github.com/orgs/community/discussions/15580 - Ciro Santilli OurBigBook.com
显示剩余2条评论
11个回答

427

虽然GitHub移除了私信功能,但仍有替代方案。

GitHub托管 git 代码库。如果您想与其通信的用户以前曾提交过一些代码,则很有可能可以实现您的目标。确实,在每个提交中都存储有关更改作者或接受更改的作者的一些信息。

假设您真的渴望与用户 user_test 进行交流:

  • 显示用户的公共活动页面:https://github.com/user_test?tab=activity
  • 搜索包含"user_test pushed to [branch] at [repository]"的事件。通常有很大的机会,他们可能已经推送了自己的某些提交。通过单击“查看比较...”链接确保这是正确的情况,并确认该用户列为提交者之一。
  • 在本地机器上克隆他们推送的存储库:git clone https://github.com/..../repository.git
  • 检出他们推送的分支:git checkout [branch]
  • 显示最新提交:git log -50

作为提交者/作者,电子邮件应与提交数据一起显示。

注意:所有与未经请求的电子邮件有关的警告都应该适用。请勿发送垃圾邮件。


16
用户没有活动是什么意思?我的意思是,仅仅创建了一个帐户但是再也没有登录过? - Hossein
24
因为可能没有填写。请参考问题 -> "当github页面上只给出用户名/ID时怎么办?" - nulltoken
7
@nulltoken,我含泪读完了你的回答。我简直不敢相信这个梦想成真了。谢谢兄弟,谢谢...... - Esterlinkof
4
有可能你会得到一个 username@users.noreply.github.com 的地址,以防有人真的想保护他的电子邮件地址。 - tigrou
4
我希望 Github 的相关人员能够看到这个回答,并将 Messenger 功能重新添加回去。 - NeoWang
显示剩余6条评论

403

该方法截至2023年1月仍然有效

  1. 将下一行复制并粘贴到您的浏览器中(可以随意将其书签保存):https://api.github.com/users/xxxxxxx/events/public
  2. 找到您想要获取电子邮件地址的GitHub用户名。 将URL中的xxxxxxx替换为该用户的GitHub用户名。按 Enter 键。
  3. 按 Ctrl + F 并搜索“email”。

qbolec所建议的,可以使用此片段完成上述步骤:

<input id=username type="text" placeholder="github username or repo link">
<button onclick="fetch(`https://api.github.com/users/${username.value.replace(/^.*com[/]([^/]*).*$/,'$1')}/events/public`).then(e=> e.json()).then(e => [...new Set([].concat.apply([],e.filter(x => x.type==='PushEvent').map(x => x.payload.commits.map(c => c.author.email)))).values()]).then(x => results.innerText = x)">GO</button>
<div id=results></div>

来源:Matthew Ferree @ Sourcecon


15
在我的情况下,它不包含电子邮件。 - TheKitMurkit
9
这种方法需要用户有一些公开的活动。 - ovinophile
16
哇,这个答案对于垃圾邮件发送者来说真是一宝藏……“如何查找任何Github用户的电子邮件地址”。 - Alex from Jitbit
9
这个API中的电子邮件地址来自用户本地的git设置,而不是他们在Github中设置的电子邮件地址。最近Github添加了一个选项,在“设置/电子邮件”下,可以阻止提交意外包含用户标记为“私有”的电子邮件地址的情况。是的,API揭示的内容仅适用于公共存储库;私人存储库数据不会显示。 - leanne
6
@pbhj 有人应该告诉 Github,这可能是一个隐私泄露。 - Gewure
显示剩余14条评论

133

只需创建一个虚拟仓库,打开一个新问题,并使用 @xxxxx 来通知受影响的用户。

如果用户启用了电子邮件通知,他们将收到一封电子邮件,否则他们将在下次登录时注意到。

无需在提交或活动流中搜索电子邮件地址,同时保护隐私。


3
应该成为更受欢迎的答案。简单明了,正如你所说,尊重隐私。谢谢。 - JoelAZ
4
如果该账户没有任何活动,我能找到的唯一方法就是这样做。 - Dave Strickler

67

对于像我这样的懒人,以下是基于 Nikhil 的解决方案 的代码片段

<input id=username type="text" placeholder="github username or repo link">
<button onclick="fetch(`https://api.github.com/users/${username.value.replace(/^.*com[/]([^/]*).*$/,'$1')}/events/public`).then(e=> e.json()).then(e => [...new Set([].concat.apply([],e.filter(x => x.type==='PushEvent').map(x => x.payload.commits.map(c => c.author.email)))).values()]).then(x => results.innerText = x)">GO</button>
<div id=results></div>


6
如果你搜索的用户合并了另一个用户的PR,那么这将会出现误判。在这种情况下,“commits”将是一个包含PR作者和合并者(合并PR的用户)的数组。 - styfle

36

这里还有一种方法:

  • 浏览某人的提交历史记录(点击旁边的 commits 按钮可查看整个提交历史记录)

  • 点击该用户名称对应的提交,因为可能有很多提交记录

  • 然后你会看到网址末尾有一个哈希值。在这个提交 URL 后面加上.patch

  • 可能会 在那里看到该用户的电子邮件地址

示例:https://github.com/[用户名]/[仓库名]/commit/[哈希值].patch

来源:Chris Herron @ Sourcecon


9
为了避免个人邮件地址被公开,Github用户可以前往“设置->电子邮件”,勾选“保持我的电子邮件地址私有”选项。然后,他们必须使用git config user.emailgit config --global user.email命令将本地* git *电子邮件设置为Github私人电子邮件地址(<username>@users.noreply.github.com)。从此以后,他们的所有提交都将只包含私人的“noreply”电子邮件地址。请注意,任何之前的提交或本地存储库提交中设置的个人电子邮件地址仍将包含真实的电子邮件地址。 - leanne
3
还能用,谢谢。 希望垃圾邮件发送者不会滥用该功能。 - Dennis Gorelik

34

GitHub在2012年4月3日表示:

今天我们将移除两个功能。它们已经闲置了一段时间,是时候清理它们了:Fork队列和私信功能。

来源


4
这个答案已经过时了。请查看下面的更新答案。 - Porcupine

5
除了移除 Github消息服务 之外,由于许多Github成员使用和推荐Twitter进行交流,因此通常不必使用该服务。

优点是:

  • 完全透明
  • 更好的覆盖范围
  • 更好的推文搜索功能
  • 更好的存档,例如美国国会图书馆

很可能StackOverflow也不允许私人消息,以确保完全透明。 整个消息问题在meta-stackoverflow上得到了广泛讨论,详见此处


8
有没有一种公开发送消息给他们的方式?比如,我想问一个关于如何完成某个任务的问题,但是提供的文档太糟糕了。他们回复不仅对我有帮助,而且对任何试图使用他们代码的人都有好处。 - Michael
11
如果你想询问有关某人的项目或者汇报问题,只需在GitHub上打开一个“issue”并进行讨论。 - Alex from Jitbit
10
虽然这是一个悲哀的情况。对我来说,Twitter根本就不是一个好的平台。 - Xupicor
10
因为字符限制只有140个,所以Twitter对于真正的交流来说并不理想。 - My1
6
如果个人资料页面上没有列出 Twitter 账号,这并不能真正帮助到他们。 - Igor
显示剩余11条评论

1
我非常喜欢的最简单的解决方案就是只需输入该特定用户的用户名或相应用户的存储库链接即可!

<input id=username type="text" placeholder="Github Username or Repo link">
<button onclick="fetch(`https://api.github.com/users/${username.value.replace(/^.*com[/]([^/]*).*$/,'$1')}/events/public`).then(e=> e.json()).then(e => [...new Set([].concat.apply([],e.filter(x => x.type==='PushEvent').map(x => x.payload.commits.map(c => c.author.email)))).values()]).then(x => results.innerText = x)">GO, Get email!</button>
<div id=results></div>


1
GitHub有这个社交功能吗?如果提交电子邮件保持私密, GitHub 现在(2020年7月)提议
用户和组织现在可以将Twitter用户名添加到他们的GitHub配置文件中。
你现在可以直接从你的配置文件页面,通过配置文件设置,以及REST API中添加你的Twitter用户名。
我们还添加了最新的更改:
- 组织管理员现在可以通过组织配置文件设置和REST API添加Twitter用户名。 - 所有用户现在都能够在用户和组织配置文件以及REST和GraphQL API中看到Twitter用户名。 - 当可赞助的维护者和组织将Twitter用户名添加到其配置文件中时,我们将鼓励新的赞助商在分享他们的赞助时包括该Twitter用户名。

这可能是给 GitHub 用户留言的一种解决方法。


但是如果直接消息被个人禁用了怎么办?这也算是公平的,因为开发者可以决定是否被Github联系。 - Ciel Ruby
1
@KevinCrans 是的,我想这就是目的:让用户重新控制自己是否愿意被联系。 - VonC

1

使用(并滥用)私人漏洞报告(安全公告)

此功能最初是为了安全地报告存储库的安全问题而引入的:https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability

此功能需要每个存储库选择加入,因此对于绝大多数存储库来说是不可能的。

然而,如果您希望允许他人与您进行私下联系,一个自然的约定就是在您自己的存储库中启用安全公告:

To enable those:

Once this is enabled, when other users visit: https://github.com/cirosantilli/cirosantilli/security they will see:

  • 一个“报告漏洞”按钮。
  • 现有漏洞列表

目前情况非常混乱,如果您以所有者身份登录,您将无法看到此页面,但您可以通过在隐私选项卡上退出登录并访问该页面来确认。

一旦打开漏洞,它基本上就像一个私人的GitHub问题,两个用户都可以进行评论交流。

然后,存储库所有者可以随时决定公开漏洞,此时它将出现在存储库漏洞列表中。

一旦发布,无法再对漏洞进行评论。但存储库所有者仍然可以编辑报告标题和正文详细信息。

对于一次不太严重的漏洞对话,需要:

  • 设置虚拟影响/修复版本。0/1即可
  • 不要请求CVE,以免使GitHub管理员对您产生反感,因为显然这会引发GitHub方面的审核

总结起来,对于绝大多数用户来说,这是太繁琐的工作,而私人消息的使用将很少。但是,无论如何,隐私控制是不可避免的选择,即使以后出现了更专门的方式,它始终是一种利基产品。但仍然,这是一种方式。我已经在我的主页存储库上启用了它。


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