使用R的git2r包推送代码时遇‘http.followRedirects未找到’错误求助
解决git2r推送时"http.followRedirects"错误的方案
问题原因
你通过HTTPS协议克隆仓库,却尝试用SSH凭证推送,协议不匹配触发了HTTP相关配置的查找;另外旧版本git2r依赖的libgit2库可能未包含http.followRedirects这个配置项。
修复步骤
改用SSH协议克隆仓库
将克隆命令替换为GitHub的SSH地址(格式为git@github.com:path/repository.git),这样远程仓库默认走SSH协议,推送时不会触发HTTP配置查找:clone(url = "git@github.com:path/repository.git", local_path = my_path)更新git2r及底层依赖
旧版本git2r依赖的libgit2可能缺失目标配置项,更新到最新版本:install.packages("git2r")若需要最新开发版,可从源码安装(需本地有编译环境):
remotes::install_github("ropensci/git2r")保留HTTPS协议的适配方案
若不想重新克隆仓库,可修改远程地址并配置HTTP参数,同时使用个人访问令牌(PAT)作为凭证:# 修改远程origin为HTTPS地址 remote_set_url(repo, "origin", "https://github.com/path/repository.git") # 手动设置http.followRedirects配置 config(repo, http.followRedirects = TRUE) # 创建HTTPS凭证(GitHub需用PAT替代密码) cred <- git2r::cred_user_pass(username = "my_name", password = "你的个人访问令牌") # 执行推送 push(repo, "origin", "refs/heads/master", credentials = cred)注:GitHub已禁用密码登录,必须使用个人访问令牌(PAT),可在GitHub账户设置中生成。
额外提醒
- 确认你的SSH密钥已添加到GitHub账户的SSH设置中,否则SSH推送会失败。
- 可在终端执行
git config --list查看本地全局git配置,排查是否有冲突项。
内容的提问来源于stack exchange,提问作者José Carlos Checoli Figueiredo
相关产品推荐
相关产品推荐

