我熟悉how Git creates SHA1 hashes for files (blobs),但不知道如何爲標記對象創建它們。我假設他們是,如果我創建一個帶註釋的標籤,但是配方是什麼?我該如何在Git之外複製它(例如,在Perl或Python中)?如何創建Git標籤對象SHA1?
1
A
回答
0
的圖案基本上是:
sha1("tag " + datasize + "\0" + data)
凡data
是git cat-file
輸出。人們可以通過管道該輸出產生這git-hash-object
像這樣:
git cat-file tag v0.30 | git hash-object -t tag --stdin
而且相當於一個Perl的一行是:
git cat-file tag v0.30 | perl -MDigest::SHA1 -E '$/=undef;$_=<>;say Digest::SHA1->new->add("tag ".length()."\0".$_)->hex digest'
看來,一個可以做同樣的事情與任何只需將"tag "
替換爲適當的對象名即可:"blob "
,"tree "
或"commit "
。
0
這幾乎是一樣的,儘管提交對象前面的小標題是不同的。您可以使用git cat-file
來查看實際的格式。
1
一個標籤對象的內容如下:基於計算出的SHA1值文本
object <commit-sha1>
type commit
tag <tag-name>
tagger <author-with-timestamp>
<tag-message>
。
我該如何在Git之外複製它(例如,在Perl或Python中)?
相關問題
- 1. 創建多個Git標籤
- 2. 如何使用struts標籤在jsps中創建對象?
- 3. 如何使用JQ爲IE創建對象標籤?
- 4. 如何使用代碼創建對象(標籤,按鈕)
- 5. 如何在android中創建標籤對象?
- 6. 如何根據其SHA1代碼識別Git對象類型?
- 7. 創建對象時,自動創建標籤對象,Django的REST框架
- 8. 如何創建返回標誌對象
- 9. 來自git標籤對象的信息
- 10. 在git中重新創建svn標籤
- 11. 在竹內創建GIT標籤
- 12. 使用子模塊創建git標籤
- 13. 的Git拒絕用戶創建標籤
- 14. 如何創建標籤? Docpad
- 15. 查找git中所有對象的SHA1's git
- 16. 如何使用Windows加密API來創建RSA-SHA1簽名XMLDSIG
- 17. 如何在GAE/J上創建OAuth HMAC-SHA1簽名?
- 18. 從現有的git標籤創建一個svn標籤
- 19. 如何爲傳統gcc版本創建git標籤?
- 20. Git:如何創建一個也包含子模塊的標籤?
- 21. git-svn:如何爲SVN的子項目創建標籤/分支
- 22. 如何在Git中創建發佈標籤
- 23. 如何在Openshift Origin上創建git標籤?
- 24. 如何使用GitExtensions for Windows創建Git標籤?
- 25. 如何創建用於對象簽名的自簽名證書?
- 26. 如何在git中使用python和dulwich創建標籤列表並創建新標籤?
- 27. 如何從父對象創建對象?
- 28. .net如何創建SHA1哈希?
- 29. 創建對象目標C
- 30. svn創建標籤標籤
啊,我看到'git cat-file'的輸出返回實際散列的內容。 – theory