我正在使用此API更新我的存储库上的文件,它要求我对要更新的文件具有有效的SHA blob:
http://developer.github.com/v3/repos/contents/
如何找到特定文件的SHA blob?假设在测试帐户的testrepo中,test.txt文件的SHA是什么?
https://github.com/testacc01/testrepo01
非常感谢!
发布于 2013-11-26 11:53:48
用于更新文件的文档指定您将需要为要替换的文件提供SHA。最简单的方法也是查询github。例如:
> curl https://api.github.com/repos/testacc01/testrepo01/contents/test.txt
{
"name": "test.txt",
"path": "test.txt",
"sha": "4f8a0fd8ab3537b85a64dcffa1487f4196164d78",
"size": 13,
…
因此,您可以在JSON响应的“So”字段中看到SHA是什么。当您制定使用新版本更新文件的请求时,请使用它。成功更新文件后,该文件将具有新的SHA,您需要请求该SHA才能再次更新它。(我猜,除非您的下一次更新是在不同的分支上进行的。)
发布于 2017-11-27 09:46:20
如果您使用的是GraphQL API v4,您可以使用以下内容来查找特定文件的sha:
{
repository(owner: "testacc01", name: "testrepo01") {
object(expression: "master:test.txt") {
... on Blob {
oid
}
}
}
}
发布于 2020-06-28 00:42:41
如果您不想访问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)
https://stackoverflow.com/questions/20207594
复制相似问题