tsa*_*eht 10 git curl github-api
我想在我的桌面上上传一个名为“hello.txt”的文件到我的 git 存储库,它有一个版本。我该怎么做呢?我阅读了 git 文档,但它说的是:
POST https://<upload_url>/repos/:owner/:repo/releases/:id/assets?name. 如何在 CURL 中做到这一点。我不明白这一点。
如何将此文件作为发布资产发布到我的 github 发布?谢谢
gal*_*drp 18
curl \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: $(file -b --mime-type $FILE)" \
--data-binary @$FILE \
"https://uploads.github.com/repos/hubot/singularity/releases/123/assets?name=$(basename $FILE)"
Run Code Online (Sandbox Code Playgroud)
扩展@galeksandrp的答案,以下是我遇到的一些问题
请注意,该--data-binary选项首先将文件内容复制到 RAM,因此如果您有大文件,例如接近 2048MB,即 github 版本的绝对限制,并且如果 RAM 不够,则会失败并显示curl: option -d: out of memory.
解决这个问题的方法是使用-T file path(不带@)。
另外,如果您想查看上传进度,您需要将输出通过管道传输到,cat例如curl <...the whole command> | cat
所以完整的命令看起来像这样
curl -X POST \
-H "Content-Length: <file size in bytes>" \
-H "Content-Type: $(file -b --mime-type $FILE)" \ #from @galeksandrp's answer
-T "path/to/large/file.ext" \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://uploads.github.com/repos/<username>/<repo>/releases/<id>/assets?name=<name> | cat
Run Code Online (Sandbox Code Playgroud)
注意:
另一种方法是使用gh release upload <tag> <files>... [flags]curl 代替。(文档)
gh是GitHub的官方命令行工具。
| 归档时间: |
|
| 查看次数: |
6555 次 |
| 最近记录: |