如何找到Github文件的SHA blob

时间:2013-11-26 02:48:24

标签: git github sha github-api

我使用此API更新我的repo上的文件,它要求我为要更新的文件提供有效的SHA blob:

http://developer.github.com/v3/repos/contents/

如何找到特定文件的SHA blob?我在测试帐户的testrepo中提供了什么,test.txt文件的SHA blob是什么?

https://github.com/testacc01/testrepo01

非常感谢你!

2 个答案:

答案 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)

来源:https://git-scm.com/book/en/v2/Git-Internals-Git-Objects