You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量克隆GitHub仓库列表并实现跨仓库抄袭检测

完全可以实现,整套流程不需要复杂开发,拆成批量拉取仓库、代码相似度比对、结果匹配三个环节就能跑通,具体操作如下:

前置依赖

先在本地准备好基础运行环境:

  • 安装Git,确保命令行能直接调用git命令
  • 安装Java运行环境,用来跑代码相似度检测工具
  • 准备好两个仓库列表文件big和small,每行填一个GitHub仓库的克隆链接,删除多余空行
第一步:批量克隆列表内的所有仓库

不用手动逐个点克隆,写个简单的Shell脚本就能自动完成拉取,还能通过浅克隆节省下载时间和磁盘空间。
把下面的代码存为clone.sh,和big、small文件放在同一个目录下:

#!/bin/bash
# 批量克隆函数:入参1为仓库列表文件路径,入参2为仓库存储目录
batch_clone() {
  list_file=$1
  save_dir=$2
  mkdir -p $save_dir
  cd $save_dir
  while read -r repo_url; do
    if [ -n "$repo_url" ]; then
      # --depth=1 仅拉取最新提交,大幅提升克隆速度
      git clone --depth=1 $repo_url
    fi
  done < "../$list_file"
  cd ..
}

# 分别拉取两个列表对应的仓库
batch_clone "big" "big_repos"
batch_clone "small" "small_repos"

给脚本加执行权限后直接运行即可:

chmod +x clone.sh
./clone.sh

脚本执行完成后,big列表里的所有仓库会被存在big_repos目录,small列表的仓库存在small_repos目录。

第二步:跨集合代码抄袭比对

不需要自己从零写逐行匹配的逻辑,直接用成熟的代码相似度检测工具即可,这类工具会自动过滤注释、空行、格式差异,精准识别复制粘贴、改变量名这类常见的抄袭行为,支持绝大多数主流编程语言。
检测时直接运行如下命令即可完成两个目录下所有代码的交叉比对:

java -jar jplag.jar -l python3 -s 0.8 -r detect_result ./big_repos ./small_repos

参数说明:

  • -l 后填写待检测的代码语言,比如检测Java代码填java,检测JS代码填javascript
  • -s 后填写相似度判定阈值,取值0-1,一般设0.8即可筛出直接抄袭的内容,可根据检测场景灵活调整
  • -r 后填写检测报告的输出目录
    命令运行完成后,打开输出目录里的报告文件,就能看到所有相似度超标的代码文件对,以及对应的所属仓库。
第三步:自动输出存在抄袭的仓库链接

如果不想手动翻报告匹配链接,可以写个简单的解析脚本,读取检测结果里的仓库路径,和原始big、small文件里的链接做映射,直接输出存在抄袭行为的仓库链接对即可。

优化提示
  • 如果要克隆私有仓库,提前在本地配置好Git的SSH密钥或HTTPS凭据,避免拉取失败
  • 克隆和检测前可以提前排除依赖目录、构建产物目录(比如node_modules、venv、dist、__pycache__等),能大幅提升运行速度,还能避免第三方通用代码被误判为抄袭
  • 如果检测的仓库总数据量很大,可以把克隆和检测任务拆成多批跑,避免内存不足

内容的提问来源于stack exchange,提问作者bellom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:39:15