使用 curl 将文件推送到 GitHub 存储库
Using curl for pushing a file to GitHub repository
我想在没有 git
工具的情况下在 GitHub 存储库上创建(推送)新文件,(因为 git
工具在我的 PHP
上不可用主持人)。所以我进行了一些研究,发现 GitHub REST API.
我尝试使用 curl
和个人访问令牌来上传或修改我的存储库中的文件。 here is 我找到的 shell 代码,并对 curl
进行了更改,如下所示:
curl -i https://api.github.com/repos/username/repo/newFile.txt -X PUT
\ -H 'Authorization: token xxxxxxxxxxxxxxxxxxxx' -d "{\"path\": \"newFile.txt\",
\ \"message\": \"update\", \"content\": \"$(openssl base64 -A -in newFile.txt)\", \"branch\":
\"master\",
\ \"sha\": $(curl -X GET https://api.github.com/repos/username/repo/newFile.txt | jq .sha)}"
但是我得到这个错误:
HTTP/1.1 404 Not Found
Server: GitHub.com
我该如何解决这个问题?
P.S。即使 GitHub 或 (GitLab) 上有 push file by email
服务,这也有助于通过电子邮件在我的存储库上创建文件。
应该是“Create or update file contents”端点API:
PUT /repos/{owner}/{repo}/contents/{path}
(我在你的 https://api.github.com/repos/username/repo/newFile.txt
URL 中没有看到 contents
)
确保使用最近的 PAT(个人访问令牌),如 seen here。
并且 an example:
#! /bin/bash
cartella= " /var/myfolder "
# update the file
curl -i -X PUT -H ' Authorization: token 4d013330xxxxxxxxxxxxxxx ' -d " { \" path \" : \" mattei.csv \" , \
\" message \" : \" update \" , \" content \" : \" $( openssl base64 -A -in $cartella /mattei.csv ) \" , \" branch \" : \" master \" , \
\" sha \" : $( curl -X GET https://api.github.com/repos/username/repo/contents/mattei.csv | jq .sha ) } " \
https://api.github.com/repos/username/repo/contents/mattei.csv
我把我的工作 curl
放在这里,如果有人需要的话。
为了方便推送,最好把你的文件做成base64格式(base64 {filename}
或online tools)然后:
curl -X PUT -H "Authorization: token xxxxxxxxxxxxxxxxxxxx" https://api.github.com/repos/{owner}/{repo}/contents/{path}/{fileName} -d "{\"message\":\"your commit message\",\"content\":\"your file in BASE64\"}"
我想在没有 git
工具的情况下在 GitHub 存储库上创建(推送)新文件,(因为 git
工具在我的 PHP
上不可用主持人)。所以我进行了一些研究,发现 GitHub REST API.
我尝试使用 curl
和个人访问令牌来上传或修改我的存储库中的文件。 here is 我找到的 shell 代码,并对 curl
进行了更改,如下所示:
curl -i https://api.github.com/repos/username/repo/newFile.txt -X PUT
\ -H 'Authorization: token xxxxxxxxxxxxxxxxxxxx' -d "{\"path\": \"newFile.txt\",
\ \"message\": \"update\", \"content\": \"$(openssl base64 -A -in newFile.txt)\", \"branch\":
\"master\",
\ \"sha\": $(curl -X GET https://api.github.com/repos/username/repo/newFile.txt | jq .sha)}"
但是我得到这个错误:
HTTP/1.1 404 Not Found
Server: GitHub.com
我该如何解决这个问题?
P.S。即使 GitHub 或 (GitLab) 上有 push file by email
服务,这也有助于通过电子邮件在我的存储库上创建文件。
应该是“Create or update file contents”端点API:
PUT /repos/{owner}/{repo}/contents/{path}
(我在你的 https://api.github.com/repos/username/repo/newFile.txt
URL 中没有看到 contents
)
确保使用最近的 PAT(个人访问令牌),如 seen here。
并且 an example:
#! /bin/bash
cartella= " /var/myfolder "
# update the file
curl -i -X PUT -H ' Authorization: token 4d013330xxxxxxxxxxxxxxx ' -d " { \" path \" : \" mattei.csv \" , \
\" message \" : \" update \" , \" content \" : \" $( openssl base64 -A -in $cartella /mattei.csv ) \" , \" branch \" : \" master \" , \
\" sha \" : $( curl -X GET https://api.github.com/repos/username/repo/contents/mattei.csv | jq .sha ) } " \
https://api.github.com/repos/username/repo/contents/mattei.csv
我把我的工作 curl
放在这里,如果有人需要的话。
为了方便推送,最好把你的文件做成base64格式(base64 {filename}
或online tools)然后:
curl -X PUT -H "Authorization: token xxxxxxxxxxxxxxxxxxxx" https://api.github.com/repos/{owner}/{repo}/contents/{path}/{fileName} -d "{\"message\":\"your commit message\",\"content\":\"your file in BASE64\"}"