[英]How to do `git log` or `git describe` for remote tags?
我可以為本地分支和標簽執行此操作:
git log some-branch
git describe some-branch
git log some-tag
git describe some-tag
但我不知道如何對遠程標簽做同樣的事情。 它適用於分支:
git log origin/some-branch
git describe origin/some-branch
所以通過類比,我正在嘗試這個:
$ git log origin/some-tag
fatal: ambiguous argument 'origin/some-tag': unknown revision or path not in the working tree.
$ git describe origin/some-tag
fatal: Not a valid object name origin/some-tag
我也嘗試用origin/refs/tags
替換origin
,但這也不起作用。 有沒有辦法讓它工作?
我想避免在本地檢查標簽,因為我正在創建一個自動化工具,它會創建很多自己的分支,所以它會變得混亂,或者在完成后需要清理,如果出現問題,可能無法運行,所以我試圖避免額外的復雜性。 似乎它應該類似於git log origin/...
,我只是不知道如何實現。
您不能直接與遠程分支或標簽進行交互。 您必須先獲取它們。
除了分支和標簽,git 還有其他幾種類型的參考。 其中之一是“遠程跟蹤參考”。 在正常配置中,每次從遠程獲取時都會更新這些信息,以顯示當時遠程分支指向的位置。 當您說git log origin/branch
時,這就是您所使用的。
因此,當您說git log origin/branch
時,不會生成遠程branch
在哪里的日志。 它會生成您上次從遠程更新本地存儲庫時遠程分支所在位置的日志。
因為標簽不會移動,所以沒有“標簽的遠程跟蹤引用”的相應概念。 [1]
正確的方法是獲取然后記錄
git fetch origin
git log origin/branch
(由於您剛剛獲取,這將反映遙控器中的任何內容,除非有人基本上同時推送。)
git fetch origin --tags
git log some-tag
[1] 通過配置,對於如何從源映射 refs(包括標簽)實際上有很大的靈活性。 您可以創建自己的命名約定來命名“我從遠程獲取的標簽”,以便將它們與本地創建的標簽區分開來。 有些細節你必須做對,而且通常價值很小(因為標簽不應該移動)git 本身並沒有打擾,所以我懷疑你會發現它太麻煩了; 但如果你真的想,你可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.