如何在github上轻松取消多次回购?

如何在github上轻松取消多次回购?,github,Github,我意识到我在GitHub中观看了太多的回购交易,我发现取消其中许多回购交易的唯一方法是访问GitHub.com/my_user\u name/following,进入每个回购交易并按下取消交易按钮 难道没有任何方法可以更快更容易地取消它们吗?我没有看到任何方法,但是,因为我们拥有整个宇宙的力量(简而言之,我们是开发人员)。使用他们的开发者API并创建一个小工具。API非常具有描述性 Github拥有。您可以使用Github的API编写一个脚本来实现这一点,尤其是。对于懒惰的人来说,在这个url上

我意识到我在GitHub中观看了太多的回购交易,我发现取消其中许多回购交易的唯一方法是访问GitHub.com/my_user\u name/following,进入每个回购交易并按下取消交易按钮


难道没有任何方法可以更快更容易地取消它们吗?

我没有看到任何方法,但是,因为我们拥有整个宇宙的力量(简而言之,我们是开发人员)。使用他们的开发者API并创建一个小工具。API非常具有描述性


Github拥有。您可以使用Github的API编写一个脚本来实现这一点,尤其是。

对于懒惰的人来说,在这个url上不使用API也可以相当快地实现这一点:

一个干净的简单列表,点击

此外,还有一个金色的盒子。取消选中该选项,将不会自动设置为查看您获得推送访问权限的所有回购。管理信噪比万岁。

特定组织 如果您只想取消单个组织的回购,您可以从


$('.js订阅行')。每个(函数(){
var isYourOrganization=$(this).find(“a[href^='/YOUR_ORG']”;
如果(IsyourOrganization.length){
$(this).find('button:contains(“Unwatch”))。单击();
}
});


用你的组织的名称替换你的组织。

我还发现了一个命令行工具,它使用GitHub API取消对多个存储库的访问:

我不喜欢命令行工具,它们希望我的密码以明文形式出现在命令行上(因此所有在正确的时间运行“ps”的系统用户都可以看到,并且在~/.bash_history中以明文形式存储,除非您非常小心地避免),所以我没有尝试过它。

的原生JS版本。导航到,然后运行:

Oneliner:

Array.prototype.slice.apply(document.querySelectorAll('.js-subscription-row')).forEach(el => { const org = el.querySelector('a[href^="/YOUR_ORG"]'); if (org) el.querySelector('button').click()})
未包装:

const org = 'YOUR_ORG'
const query = document.querySelectorAll('.js-subscription-row')
const rows = Array.prototype.slice.apply(query)
rows.forEach(function (el) {
  const org = el.querySelector('a[href^="/' + org + '"]')
  if (org) el.querySelector('button').click()
})

有几条评论提到了

这是一张照片:


现在甚至还有一个“停止监视所有存储库”按钮!即使没有这样的按钮,您也可以打开开发人员控制台,快速执行
$('button').filter(function(){return$(this).text()==='Unwatch'})。单击()。网页+jQuery=最佳API!谢谢,@p11y,好主意。这是一个改进的帐户筛选版本(如果您只想筛选某些组织的回购协议)
$('button')。筛选(function(){return$(this).text()==='Unwatch'&&$(this.parent().parent().find(“a span”).html()=='organizationname')。单击()
@Matej:你介意把这个作为答案吗?它还是一个很棒的书签,当组织规模庞大时,它会很有帮助,而且在一个页面上有更多的回购协议!如果您有多个受关注的回购页面,“全部取消勾选”按钮是取消勾选所有回购页面,还是仅取消勾选当前页面上的回购页面?取消勾选的版本会多次抛出定义常量
org
的错误。这对我适用:const orgName='YOUR_ORG'const query=document.queryselectoral('.js subscription row')const rows=Array.prototype.slice.apply(query)rows.forEach(函数(el){let ORG=el.querySelector('a[href^=“/'+orgName+'”])if(ORG)el.querySelector('button')。click()})选择器已更改,当前有效的是
Array.prototype.slice.apply(document.queryselectoral('.Box row')).forEach(el=>{const org=el.querySelector('a[href^=“/alphagov]”);如果(org)el.querySelector('button')。click())
Github似乎已更新此页面。以上代码的更新是我刚刚使用的:
Array.from(document.queryselectoral('.repo list>li')).filter(el=>!!el.querySelector('a[href^=“/YOUR-ORG”]).forEach(el=>el.querySelector('details-menu button[value=“include”])。单击()
然后刷新页面并再次运行,直到全部完成。最新版本正在更新,现在有一个“全部取消匹配”按钮。