[英]How can I work out time difference between git tag and the original commit
我想找出提交時間和標記提交時間之間的時間差。
這是我到目前為止,但我認為這是正確的字段的committerdate是null。
git for-each-ref --format='%(taggerdate) : %(committerdate) : %(refname)' --sort=-taggerdate --count=10 refs/tags
我猜我只看標簽,但我無法做到。 在一個理想的世界中,它會顯示時間之間的差異,但如果不可能,我可以在之后做到這一點。
git for-each-ref
文檔有點誤導:
對於提交和標記對象,特殊的
creatordate
和creator
字段將對應於committer
或tagger
字段中的相應日期或名稱 - 電子郵件日期元組,具體取決於對象類型。 這些用於處理帶注釋和輕量級標簽的混合。
這完全按照記錄的方式工作: %(creatordate)
從這些帶注釋的標簽的tagger
字段中獲取日期。 但是,它似乎意味着對於帶注釋的標記,Git可能會檢查相應的提交:如果沒有,它將如何獲得committer
?
實際上, for-each-ref
從不直接查看帶注釋標簽的目標對象。 該的提committer
字段是特定於輕量級的標簽,以提交這一點,而不是注釋標記對象1。 幸運的是,有一個格式指令說“間接看”,因為它是:只需在指令前添加*
。 2
因此答案是:
git for-each-ref \
--format='%(taggerdate) : %(*committerdate) : %(refname)' \
--sort=-taggerdate --count=10 refs/tags
1輕量級標簽可以直接指向樹木或斑點; 目前還不清楚在這種情況下會發生什么。 可能擴張是空的。
2請注意,這只是間接一次 ,因此如果帶注釋的標記的目標是另一個標記(或者是樹或blob),則不會有提交者日期字段。 要真正使其可靠,您可能應該使用一些shell腳本並使用^{}
或^{commit}
后綴解析標記名稱。 (這兩者之間的區別在於,如果最終目標對象是樹或blob, ^{commit}
將失敗 ,而^{}
將成功,找到該樹或blob對象。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.