我正在C#网络应用程序中使用GitHub API(使用Blazor(。我希望能够创建一个提交来添加、删除和编辑存储库中文件夹中的多个文件。我知道我可以用这些内容向URLhttps://api.github.com/repos/[username]/[repository]/contents/[file]
发送PUT请求来创建文件(我也可以通过添加SHA哈希来编辑文件(:
{
"message": "[Commit message]",
"content": "[Content encoded in base64]",
"committer": {
"name": "[Committer name]",
"email": "[Committer email]"
}
}
但这会为每个文件更改创建一个提交。有没有任何方法可以在一次提交中执行多个操作(使用GitHub API或其他方法(?我会使用类似libgit2sharp的东西,但我不想将存储库克隆到文件系统上的文件夹中。
是否有任何方法可以在一次提交中执行多个操作(使用GitHub API或其他方法(?
有一个底层的Git Data API可以用来从头开始构建提交:
- 文件使用API作为Blob上传
- 树用于指示存储库的状态(更新指向新Blob的路径(
- 然后使用新的根树和其他元数据创建一个新的提交
- 如果可以,则更新引用(即分支(以指向此新提交
您可以使用GitHub API的Git流:
- 通过创建ref(例如
refs/heads/myNewBranch
(创建一个新分支,使用您想要的任何基本分支的SHA - 在该分支中进行内容更改(创建/更新或删除文件(。请确保将
branch
参数设置为新的分支名称 - 使用您的新分支作为头创建一个pull请求
- 将拉请求与Merge_method"合并;南瓜";。这将压缩来自单个内容更改API调用的所有提交,并使用您选择的提交消息进行1次提交