在 GNU Emacs 中随时间浏览 'git blame' 的几种方法
摘要
探讨在 GNU Emacs 中随时间使用 git blame 的方法,提供浏览提交历史的实用技巧。
<p><a href="https://lobste.rs/s/hhuk8a/some_ways_navigate_through_git_blame_over">评论</a></p>
查看缓存全文
缓存时间: 2026/08/07 10:20
# 你正在使用一个过于老旧的浏览器
来源:https://utcc.utoronto.ca/~cks/cspace-bad/cspace-old-browser.html
## 你的浏览器旧得可疑
你看到这个页面,很可能是因为你访问了我的博客 [Wandering Thoughts](https://utcc.utoronto.ca/~cks/space/blog/) 或 [CSpace](https://utcc.utoronto.ca/~cks/space/)(即该博客所属的 wiki 项目)的某个部分。遗憾的是,你使用的浏览器版本被我的反爬虫措施判定为可疑,最常见的原因是版本过旧(尤其适用于 Chrome 的各个版本)。另外,从 2025 年初开始,大量高流量爬虫(其中一部分显然是为了收集数据用于 LLM 训练)使用各种旧浏览器 User-Agent,尤其是 Chrome 的 User-Agent,泛滥成灾。为了减轻 [Wandering Thoughts](https://utcc.utoronto.ca/~cks/space/blog/) 的负载,我正在尝试(或者说试图)屏蔽所有这些爬虫,而你就撞上了这道屏障。
如果这是误判,而且你使用的浏览器是当前版本,你可以通过我在大学的 [当前主页](https://www.cs.toronto.edu/~cks/) 联系我(你应该能从该页面推断出电子邮件地址)。如果可能,请告诉我你使用的浏览器等相关信息,最好附上确切的 User-Agent 字符串。
## 给使用 Inoreader(RSS 阅读器)用户的特别说明
我没有屏蔽 Inoreader 的订阅源抓取器,也不认为它过于老旧,它通常会定期从我这抓取订阅源。我不知道为什么 Inoreader 会向你展示这个页面。有可能他们偶尔会使用旧浏览器的 HTTP User-Agent(或真正的旧浏览器)来抓取订阅源或页面,并将那次抓取的结果(即本页)作为应该展示给用户的内容,而不是他们正常的订阅源抓取代理的结果。这在当下是个严重的错误:[现代 HTTP 抓取的结果部分取决于所使用的 HTTP User-Agent](https://utcc.utoronto.ca/~cks/space/blog/web/HTTPResultsAndUserAgents)。
## 给使用 Feedly(RSS 阅读器)用户的特别说明
与 Inoreader 类似,Feedly 会定期使用虚假的旧浏览器 HTTP User-Agent 头来抓取我的订阅源,这会导致失败,然后他们又固执地抓住这些失败结果,用他们常规的 Feedly HTTP User-Agent 进行实际订阅源抓取。对此我无能为力;你应该联系 Feedly 支持(如果你能找到的话)。更多详情请参见我在 [Wandering Thoughts 中的这条评论](https://utcc.utoronto.ca/~cks/space/blog/web/FeedReaderErrorsProblem?showcomments#cks-20260215115901)。
## 给使用 Vivaldi 用户的特别说明
由于持续的恶意攻击,你可能需要更改 [“User Agent Brand Masking”设置](https://help.vivaldi.com/desktop/miscellaneous/user-agent-brand-masking/),让你的 Vivaldi 将自身标识为 Vivaldi,而不是 Google Chrome。即使是最新版本的 Vivaldi 也需要这样做。
## 给使用 archive.\* 用户的特别说明
你可能是通过 archive.today、archive.ph、archive.is 等站点看到本页的。遗憾的是,archive.\* 在抓取页面并归档时,其行为方式与恶意行为者无法区分。它们使用旧版 Chrome 的 User-Agent 值,从分布广泛且无法明确归属的 IP 地址段进行抓取,而且其中一些 IP 地址的逆向 DNS 记录是伪造的,声称自己是 googlebot 的 IP 地址(这种事情通常只有非常恶劣的行为者才会做)。我建议你使用 archive.org,它作为归档爬虫行为更为规范,并且可以抓取我的 [博客(Wandering Thoughts)](https://utcc.utoronto.ca/~cks/space/blog/)。
Chris Siebenmann,2025-02-17
相似文章
始终追溯
本文探讨了通过版本控制追溯代码演变来阅读和理解代码的策略,重点强调了 `git blame` 的使用以及理解作者视角的重要性。
Git history 命令值得更多关注
文章重点介绍了新的 `git history` 命令及其 `fixup`、`reword` 和 `split` 子命令,这些命令提供了原子化且感知分支的提交历史编辑功能,带来了类似 jj 的益处,而无需切换版本控制系统。
Git 2.54 亮点速览
Git 2.54 带来全新的实验性 `git history` 命令,可在不碰工作区的情况下重写或拆分提交,另有 137 位贡献者带来的其他改进。
离开 Magit 后的 Emacs
作者讲述了他们离开 Emacs 的 Magit Git 界面,转而采用 VC-mode 和自定义 Git 脚本等替代方案的经历,重点介绍了其中的调整和所学到的经验教训。
Show HN: Gitstock–将您的 GitHub 提交历史转换为 K 线图和动画
Gitstock 将 GitHub 提交历史转换为可分享的 K 线图和动画,让您一目了然地评估仓库的活动和健康状况。