我使用此API更新我的repo上的文件,它要求我为要更新的文件提供有效的SHA blob:
http://developer.github.com/v3/repos/contents/
如何找到特定文件的SHA blob?我在测试帐户的testrepo中提供了什么,test.txt文件的SHA blob是什么?
https://github.com/testacc01/testrepo01
非常感谢你!
答案 0 :(得分:12)
更新文件的文档指定您需要为要替换的文件提供SHA。最简单的方法是查询github。例如:
> curl https://api.github.com/repos/testacc01/testrepo01/contents/test.txt
{
"name": "test.txt",
"path": "test.txt",
"sha": "4f8a0fd8ab3537b85a64dcffa1487f4196164d78",
"size": 13,
…
因此,您可以看到SHA在JSON响应的“sha”字段中的含义。在使用新版本制定更新文件的请求时使用它。成功更新文件后,该文件将具有一个新的SHA,您需要先请求它才能再次更新。 (除非,我猜,你的下一次更新会在不同的分支上进行。)
答案 1 :(得分:1)
如果您不想点击api,则可以自己生成SHA。 Git通过将blob {content.length} {null byte}
形式的标头和文件内容串联在一起来生成SHA。例如:
content = "what is up, doc?"
header = "blob #{content.bytesize}\0"
combined = header + content # will be "blob 16\u0000what is up, doc?"
sha1 = Digest::SHA1.hexdigest(combined)