GitHub:搜索旧版本的文件


98

我知道可以使用GitHub在回购中搜索文件的所有当前版本。但是,我也想搜索回购文件的旧版本。例如,假设我以前在代码中有一个名为get_info()的函数,但是在几个版本之前将其删除,是否有可能搜索get_info并找到代码。如果无法使用GitHub,可以从git命令行使用吗?

编辑

感谢@Mark Longair展示了如何从git命令行完成此操作。如果在GitHub中不可能,那将是一个很棒的功能。

Answers:


121

目前,我不认为可以在github网站上的存储库代码的完整历史记录中进行搜索-最接近的就是使用此页面上的“代码搜索”选项在存储库的当前代码中进行搜索。

但是,在命令行中,您可以找到任何引入或删除了行的提交,get_info并带有-Sto选项git log。例如:

git log -Sget_info -p

(nb -S和搜索词之间不应有空格)

(另请注意:要搜索多个单词,请在内加上'):

git log -S'get info' -p

因此,至少应该找到首次引入该功能的提交和将其删除的提交。我添加了,-p因此您也可以看到补丁-如果大量提交引入了提及功能的更改,这些功能可能会有所帮助。如果该功能仅在另一个分支上,则使用--all它搜索所有分支也可能很有用。

Jefromi在下面的评论中指出git 1.7.4将引入该-G选项作为替代方案-Junio Hamano(git维护者)在最近的博客文章中总结了此更改:http : //gitster.livejournal.com/48191.html


2
是的,我知道我可以搜索注释,但是搜索代码呢?
normski 2011年

10
-S选项确实会在代码中查找-它会找到get_info提交所引入的diff 中所包含的所有提交。您可能对--grep搜索日志消息的选项感到困惑。
Mark Longair 2011年

2
@normski:git的最新版本添加了类似的-G选项,该选项采用正则表达式而不是固定字符串。
卡斯卡贝尔2011年

@Jefromi:感谢您提到-我已将其添加到答案中,希望可以。
Mark Longair 2011年

2
@Anthony Damico:是的,只需引用搜索字符串,例如git log -S'get info' -p
Mark Longair
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.