如何查询GitHub仓库内指定文件的首次引入时间?
查询GitHub仓库内指定文件首次引入日期的可行方案
你之前用的仓库元数据接口只能返回整个仓库的创建时间,而你请求的文件内容接口仅会返回文件当前版本的最近更新信息,本身不存储文件的历史提交溯源数据,自然拿不到首次创建时间。
要获取文件第一次被提交到仓库的时间,有两种常用方案:
方案1:直接调用GitHub API查询(无需克隆仓库)
使用GitHub官方的提交列表接口,通过path参数指定目标文件路径,筛选和该文件相关的所有提交,取最早一条的提交时间即可。
针对你举例的gensim/scripts/make_wikicorpus.py文件,第一步可以先执行如下命令获取该文件的提交分页信息:
curl -I "https://api.github.com/repos/RaRe-Technologies/gensim/commits?path=gensim/scripts/make_wikicorpus.py&per_page=1"
返回的响应头里Link字段会标注该文件提交记录的最后一页页码,把请求参数里的page值改成最后一页的页码再发起请求:
curl "https://api.github.com/repos/RaRe-Technologies/gensim/commits?path=gensim/scripts/make_wikicorpus.py&per_page=1&page=这里填最后一页的页码" | grep '"date"'
返回结果里的第一个date字段值,就是该文件首次被引入仓库的时间。
注意:接口里的
path参数只需要填文件在仓库内的相对路径,不需要带/blob/分支名/这类前缀,否则会匹配不到对应提交记录。
方案2:本地已克隆仓库时用git命令快速查询
如果你本地已经拉取了对应仓库,直接在仓库根目录执行如下命令即可,不需要调用外部接口,速度更快:
git log --diff-filter=A --follow --format=%ai -- 目标文件相对路径 | tail -1
命令参数说明:
--diff-filter=A:仅筛选文件被首次添加(Add)到仓库的提交记录--follow:自动跟踪文件的重命名历史,不会因为文件中途改过名就丢失早期记录tail -1:取最早的一条提交时间作为结果
内容的提问来源于stack exchange,提问作者shantanuo
相关产品推荐
相关产品推荐

