如何使用C# Octokit从私有仓库下载文件
使用C# Octokit从私有GitHub仓库下载文件
1. 安装Octokit包
通过NuGet安装Octokit库:
- 包管理器控制台执行:
Install-Package Octokit - 或.NET CLI执行:
dotnet add package Octokit
2. 准备GitHub个人访问令牌(PAT)
要访问私有仓库,你需要生成一个具备repo权限的PAT:
- 登录GitHub,进入Settings > Developer settings > Personal access tokens
- 生成新令牌,勾选
repo权限,保存好生成的令牌字符串(仅显示一次)
3. 编写下载代码
以下是完整的示例代码,包含认证、获取文件内容和本地保存的逻辑:
using Octokit; using System; using System.IO; class GithubFileDownloader { static async Task Main(string[] args) { // 配置参数 string githubToken = "你的PAT令牌"; string repoOwner = "仓库所有者(个人/组织用户名)"; string repoName = "私有仓库名称"; string targetFilePath = "仓库内文件的相对路径,如: docs/setup.md"; string targetBranch = "main"; // 目标分支名 string localSavePath = "本地保存路径,如: C:/Downloads/setup.md"; // 初始化认证后的GitHub客户端 var client = new GitHubClient(new ProductHeaderValue("PrivateRepoFileDownloader")); client.Credentials = new Credentials(githubToken); try { // 获取文件内容(私有仓库需认证才能访问) var contents = await client.Repository.Content.GetAllContents(repoOwner, repoName, targetFilePath, targetBranch); var fileContent = contents[0]; // 解码Base64格式的文件内容 byte[] fileBytes = Convert.FromBase64String(fileContent.Content); // 写入本地文件 File.WriteAllBytes(localSavePath, fileBytes); Console.WriteLine("文件已成功下载到本地"); } catch (NotFoundException) { Console.WriteLine("错误:指定的文件或仓库不存在"); } catch (AuthorizationException) { Console.WriteLine("错误:令牌无效或权限不足,请检查PAT的repo权限"); } catch (Exception ex) { Console.WriteLine($"下载失败:{ex.Message}"); } } }
关键注意事项
- 确保
targetFilePath是仓库内的相对路径,根目录文件直接写文件名即可 - 如果仓库属于组织,
repoOwner填写组织名称 - 令牌要妥善保管,不要硬编码到代码中,建议通过环境变量或配置文件读取
内容的提问来源于stack exchange,提问作者alpha of the beta
相关产品推荐
相关产品推荐

