簡體   English   中英

如何為遠程標簽執行 `git log` 或 `git describe`?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM