我需要知道與NGit在分離分支如何獲得NGIT的實際標籤?
我已經嘗試列出的Git標籤與
foreach(var tag in git.GetRepository().GetTags()){
}
當前標記(git checkout tagname
後),但我無法找到如何與這個標籤與最後一次提交。
我需要知道與NGit在分離分支如何獲得NGIT的實際標籤?
我已經嘗試列出的Git標籤與
foreach(var tag in git.GetRepository().GetTags()){
}
當前標記(git checkout tagname
後),但我無法找到如何與這個標籤與最後一次提交。
Git不會保存當前簽出哪個標籤。如果您想要可靠地訪問此信息,則需要在檢查標籤時單獨存儲它。
但是,你可以讓Git列出所有指向特定提交的引用。
ObjectId headCommitId = repository.resolve(Constants.HEAD);
Map<ObjectId, String> refs = git.nameRev()
.add(headCommitId)
.addPrefix(Constants.R_TAGS)
.call();
這段代碼是用Java編寫的,但應該很容易翻譯成C#。它首先解析頭引用,然後調用NameRevCommand
來列出指向此提交ID的所有引用。
addPrefix()
將參數限制爲refs/tags/
名稱空間中的參考值。
返回的Map包含提交id(key)和指向它的第一個ref,可以找到(value)。
就您的情況而言,您之前簽出的標籤應位於返回的參考文獻中。要小心,如果爲這個提交創建了多個標籤,它們中的任何一個都可以被返回 - 不一定是早先簽出的那個標籤。
編輯2016年7月11日
或者,你可以從庫中的所有標籤的列表,git.tagList().call()
和搜索指向的問題提交的標籤。
見我回答這個問題尋找提交ID到標記點的特殊性:List commits associated with a given tag with JGit
如果你覺得一個答案的問題解決了,請把它標記爲通過點擊綠色復「接受」標記。這有助於將重點放在仍然沒有答案的舊帖子上。 –