我知道使用GitHub我可以在回购中搜索我文件的所有当前版本。但是,我还想搜索旧版本的repo文件。例如,比方说,我曾经在我的代码中有一个名为get_info()的函数,但是在几个版本之前删除了它,是否可以搜索get_info并找到代码。如果使用GitHub是不可能的,可以从git命令行吗?
修改
感谢@Mark Longair展示如何通过git命令行完成此操作。如果在GitHub中不可能,那么它将是一个很棒的功能。
答案 0 :(得分:103)
目前,我不相信可以在github网站上的存储库代码的完整历史记录中进行搜索 - 最接近的是在{{3上的“代码搜索”选项中搜索存储库的当前代码。 }}
但是,从命令行中,您可以找到引入或删除提及get_info
的行的任何提交,并-S
选项git log
。 e.g:
git log -Sget_info -p
(n.b。-S
与搜索词之间不应有空格)
(另请注意:要搜索多个单词,请在'
中包围):
git log -S'get info' -p
因此,至少应该找到首次引入函数的提交和删除函数的提交。我添加了-p
,因此您也可以看到补丁 - 如果大量的提交引入了可能有用的功能的更改。如果该函数仅在另一个分支上,则使用--all
搜索所有分支也可能很有用。
this page在下面的评论中指出,git 1.7.4将引入-G
选项作为替代方案 - 这一变化在Junio Hamano(git maintainer)最近的博客文章中进行了总结:{ {3}}