如何取消查看/切换 GitHub Pull Request 上所有已查看的文件?

问题描述 投票:0回答:5

我知道我可以手动转到 PR 并取消选中“已查看”。是否有取消选中 PR 中所有文件的快捷方式?

在GitHub上发现一些相关问题 https://github.com/refined-github/refined-github/issues/2444

我为什么要这么做? 为了能够查看评论并展开因我手动标记已查看而折叠的卡片。

我在 Mac 上尝试了 Option+Click,但没有成功。

github
5个回答
34
投票

认为 UI 目前不支持这一点。看起来您需要手动勾选所有复选框。或者编写一个 JavaScript 来为您查找并单击它们。

在浏览器控制台中尝试一下。

document.getElementsByName("viewed").forEach(ch => {if(ch.checked) {ch.click()}})

2
投票

感谢 GitHub 用户 mfulton26 使用以下命令:

姓名 查询/书签
GitHub:查看全部
javascript: document.querySelectorAll('.js-reviewed-checkbox').forEach(input => input.checked || input.click());
GitHub:取消查看全部
javascript: document.querySelectorAll('.js-reviewed-checkbox').forEach(input => !input.checked || input.click());

2
投票

对于使用 VSCode 的用户,您可以下载 GitHub 扩展,您可以使用目录旁边的复选框将文件标记为

viewed
not viewed
。(该文件夹及其子文件夹中的每个文件都会反映一样)


0
投票

我使用书签来完成此任务。这是一个将所有文件标记为已读的版本,如果文件路径以

some-base-dir
开头:

javascript:(function() {
  const fileHeaders = document.querySelectorAll('div[class*="file-header"][data-path^="some-base-dir"]');

  fileHeaders.forEach(header => {
    const checkbox = header.querySelector('input[type="checkbox"]');

    if (checkbox && !checkbox.checked) {
      checkbox.click();
    }
  });
})();

要使用书签,您可以在浏览器中创建一个新书签,并将上述代码粘贴为 URL。当您访问文件标题与上述选择器匹配的页面时,只需单击书签即可自动选中所有复选框。


0
投票

我尝试使用 Anton Belev 的答案,它适用于一些较小的 PR,但不适用于我拥有的大 PR(1100 个文件)。 JavaScript 失败了,因为事实证明 GitHub 不喜欢你一次发送 1100 个请求,而我收到了很多

429
(速率有限)回复🤦u200d♂️。

我添加了睡眠并过滤掉了已经未选中的文件:

 const elements = Array.from(document.getElementsByName("viewed")).filter(ch => ch.checked);
 
 for (const element of elements) {
   await new Promise(resolve => setTimeout(resolve, 100));
   element.click();
 }
© www.soinside.com 2019 - 2024. All rights reserved.