如何在R脚本内将csv等文件从R环境上传至Github仓库
R脚本内直接上传文件到GitHub的实现方案
完全可以实现该需求,不需要额外手动操作Git或访问GitHub网页,以下是两种常用的落地路径:
方案1:通过gert包操作(适配本地已有仓库克隆目录的场景)
该方案操作逻辑和原生Git一致,适合平时已经在本地维护对应GitHub仓库副本的场景:
- 提前完成本地Git环境配置,绑定目标仓库的远程地址,配置好GitHub身份验证(SSH密钥或PAT令牌均可)
- 安装依赖包:
install.packages("gert") - 完成数据保存后直接执行以下代码即可完成上传:
library(gert) # 切换到本地GitHub仓库的根目录 setwd("你的本地仓库根目录绝对路径") # 添加你刚刚写入的目标文件到Git暂存区,比如用write_csv保存的output/result.csv git_add("output/result.csv") # 提交更新,可自定义提交说明 git_commit("自动更新结果数据", author = "你的GitHub用户名 <你的绑定邮箱>") # 推送到远程GitHub仓库 git_push()
方案2:通过gh包调用GitHub API上传(无需本地克隆仓库)
该方案不需要在本地维护完整的仓库副本,适合轻量的单文件上传场景:
- 提前在GitHub后台申请个人访问令牌(PAT),开通对应仓库的读写权限
- 安装依赖包:
install.packages("gh") - 示例上传代码如下:
library(gh) library(base64enc) # 读取本地已保存的文件 target_file <- "本地文件路径/result.csv" file_content <- readBin(target_file, "raw", file.info(target_file)$size) # 调用GitHub API上传文件 gh("PUT /repos/{owner}/{repo}/contents/{path}", owner = "你的GitHub用户名", repo = "目标仓库名称", path = "文件在仓库中的存储路径/result.csv", message = "自动上传结果数据", content = base64encode(file_content), .token = "你申请的PAT令牌" )
注意:如果是更新仓库中已存在的同名文件,需要先调用API获取该文件当前的
sha值,将sha参数添加到请求中即可,否则会触发新建文件冲突报错。
内容的提问来源于stack exchange,提问作者Koala
相关产品推荐
相关产品推荐

