https://cs.github.com/about/syntax
基础查询结构
一个关键词会匹配文件内容或文件路径。
多个关键词会匹配文件内容,只要包含关键词,就会出现在搜索结果中,不论前后顺序,是否是一个单词(多个关键词之间没有空格)。
还可以使用特定关键字(限定词)指定查询范围:
- repo:github/github
- org:github 或者 user:tj
- language:python
- path:README.md
- extension:js
- symbol:scanbytes
- content:querystats
还支持逻辑运算符:
- hello world <=> hello AND world
- hello OR world
- hello NOT world
- "fatal error" NOT path:__testing__
- (language:ruby OR language:python) AND NOT path:"tests"
还支持正则表达式,要用 // 包围:
\/git.*push\/
会查询所有文件中,git 后面有 push 的部分。git 与 push 之间可以有任意字符。
精确查找
目标词组要用 "" 包裹 "abc def"。
如果待搜索的字符串中有引号,可以用反斜杠转义 "name = \"Jim\""。
也支持限定词 path:git language:"protocol buffers"。
仓库和组织限定词
repo:github/linguist
repo:torvalds/linux OR repo:git/git
org:github <=> user:github
目前(2022-01-11)还不支持对仓库名和组织名、用户名的正则表达式全部或部分匹配,所以搜索时,需要输入目标的全部 user[org]/reponame。
语言限定
language:ruby OR language:cpp OR language:csharp
所有语言都在这里。
路径限定
path:unit_tests
它会查找所有路径中包含目标的部分。
如果只想得到根路径下的内容,用正则表达式:
path:/(^|\\/)/README\.md$/
扩展名限定
extension:.js <=> extension:js
extension:/[jt]s/
查找扩展名为 js 或 ts 的文件。
Symbol 限定
language:go symbol:WithContext
目前(2022-01-11)只能查找关于 Symbol 的定义,还没有支持所有 Symbol 或语言。关于语言支持 Symbol 搜索的情况可以看 FAQ。
同样可以用正则表达式搜索:
language:rust symbol:/^String::to_.*/
Content 限定
如果只想搜索内容,不包括文件路径,可以这样
content:README.md
它只匹配文件内容中,含有 README.md 的部分。