GitHub: 搜索旧版本的文件

我知道使用 GitHub 我可以在一个回购文件中搜索所有当前版本的文件。然而,我还想搜索我的回购文件的旧版本。例如,我曾经在我的代码中有一个名为 get _ info ()的函数,但是在几个版本之前删除了它,是否可以搜索 get _ info 并找到代码。如果不能使用 GitHub,是否可以从 git 命令行进行操作?

剪辑

感谢@Mark Longair 展示了如何在 git 命令行中实现这一点。如果在 GitHub 中无法实现,那么它将是一个很棒的特性。

53744 次浏览

目前,我认为在 github 网站上搜索存储库代码的完整历史是不可能的——最接近的方法是在 这一页上使用“代码搜索”选项搜索存储库的当前代码。

但是,从命令行中,您可以找到任何引入或删除提到 get_info的行的提交,这些行使用 -S选项提交到 git log。例如:

git log -Sget_info -p

(注意,在 -S和搜索词之间不应该有空格)

(同时注意: 要搜索多个单词,请在 '中包围) :

git log -S'get info' -p

因此,至少应该找到首次引入函数的提交和删除函数的提交。我添加了 -p,所以你也可以看到补丁-如果大量的提交引入的更改,提到的功能,可能会有所帮助。如果该函数只在另一个分支上,那么使用 --all搜索所有分支也可能是有用的。

Jefromi 在下面的评论中指出,git 1.7.4将引入 -G选项作为替代选项——这一变化在 Junio Hamano (git 维护者)最近的一篇博客文章中得到了总结: “一个 http://gitster.livejournal.com/48191.html”= “ http://gitster.livejournal.com/48191.html”rel = “ noReferrer”>

git log -G'your text' -p --all

医生中注意以下内容;

[ ... ]考虑在同一个文件中使用以下 diff 进行提交:

+    return frotz(nitfol, two->ptr, 1, 0);
...
-    hit = frotz(nitfol, mf2.ptr, 1, 0);

虽然 git 日志 -G"frotz\(nitfol"将显示此提交,但 git 日志 -S"frotz\(nitfol" --pickaxe-regex将不显示(因为该字符串的出现次数显示了此提交 没有改变)。

马克和卡斯卡贝尔指出了正确的方向,值得称赞