[英]Git config remote.origin.tagOpt --no-tags has no apparent effect
每次我嘗試更新特定存儲庫時,它都會失敗,因為維護者會定期更改nightly
標簽:
$ git fetch
From https://github.com/kyazdani42/nvim-tree.lua
! [rejected] nightly -> nightly (would clobber existing tag)
我在 .git/config 中添加了remote.origin.tagOpt = --no-tags
。 該設置顯然是無用的,因為它無論如何都會獲取標簽。
我也試過remote.origin.prune = true
和remote.origin.pruneTags = true
沒有區別。
這是完整的配置:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://github.com/kyazdani42/nvim-tree.lua.git
fetch = +refs/heads/*:refs/remotes/origin/*
prune = true
pruneTags = true
tagOpt = --no-tags
[branch "master"]
remote = origin
merge = refs/heads/master
這是man git-fetch
的相關部分:
默認情況下,任何指向正在獲取的歷史記錄的標簽也會被獲取; 效果是獲取指向您感興趣的分支的標簽。可以使用 --tags 或 --no-tags 選項或通過配置 remote.<name>.tagOpt 來更改此默認行為。 通過使用顯式獲取標簽的 refspec,您也可以獲取不指向您感興趣的分支的標簽。
這是一個 git 錯誤還是我做錯了什么?
編輯:我發現了一個解決方法:
[remote "origin"]
url = https://github.com/kyazdani42/nvim-tree.lua.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = ^refs/tags/*
tagOpt = --no-tags
我仍然想知道是否有更好的方法。
我不相信 Git 的標簽處理總是像文檔中聲稱的那樣工作,而且,即使我對 Git 的了解如此之深,我也不確定文檔最初打算聲明什么。 盡管如此,在我看來--no-tags
應該對你有用。 所以我認為這是一個 Git 錯誤——但它不是明確、明確的錯誤:也許它應該做它正在做的事情。
也就是說,對你有用的是告訴git fetch
自動強制更新refs/tags/nightly
:
[remote "origin"]
url = https://github.com/kyazdani42/nvim-tree.lua.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/tags/nightly:refs/tags/nightly
這將使您的 Git 願意強制更新nightly
標簽,這樣您就不需要--no-tags
來表現。
顯然你的解決方法也有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.