我目前有一个git远程设置,如下所示:
[remote "upstream"]
url = <redacted>
fetch = +refs/heads/*:refs/remotes/upstream/*
Run Code Online (Sandbox Code Playgroud)
当我git pull
在分支主机上发出时,所有远程头都被提取到遥控器/上游,然后遥控器/上游/主机被合并到主机.任何可以到达的标签也同时被提取,这非常方便.
我想git pull
另外从遥控器上获取所有标签,而不仅仅是从头部可以直接访问的标签.我最初尝试过seting tagopt == --tags
,但发现这导致只有标签被取出,从而打破了一切.(Junio甚至说这是一个可怕的错误配置).
git pull
除了远程磁头之外,有没有办法默认获取所有远程标签?
rus*_*oue 272
一个简单的git fetch --tags
工作对我来说.
jos*_*ing 85
您应该能够通过向本地配置添加标签的refspec来实现此目的.具体来说:
[remote "upstream"]
url = <redacted>
fetch = +refs/heads/*:refs/remotes/upstream/*
fetch = +refs/tags/*:refs/tags/*
Run Code Online (Sandbox Code Playgroud)
yuc*_*cer 55
该--force
选项对刷新本地标记很有用.主要是如果你有浮动标签:
git fetch --tags --force
Run Code Online (Sandbox Code Playgroud)
git pull选项也有--force
选项,描述是相同的:
当git fetch与:refspec一起使用时,它拒绝更新本地分支,除非它获取的远程分支是它的后代.此选项会覆盖该检查.
但是,根据以下文件--no-tags
:
默认情况下,指向从远程存储库下载的对象的标记将被提取并存储在本地.
如果该默认语句不是限制,那么您也可以尝试
git pull --force
Run Code Online (Sandbox Code Playgroud)
jan*_*oth 18
当远程标签被删除时,所有答案都不适合我- 它们的本地等效项仍然存在于获取/拉取存储库中。
我发现这种属性组合是git fetch
获取已删除标签的唯一方法:
git fetch --tags --prune --prune-tags
Run Code Online (Sandbox Code Playgroud)
或者,这可以应用于本地(或全局)git 配置:
...
[remote "origin"]
url = [gitlab url]
fetch = +refs/heads/*:refs/remotes/origin/*
tagopt = --tags
prune = true
pruneTags = true
...
Run Code Online (Sandbox Code Playgroud)
好的副作用:这也适用git pull
(我无法通过命令行属性实现此目的)。
添加配置的命令:
git config (--global) remote.origin.tagopt --tags
git config (--global) remote.origin.prune true
git config (--global) remote.origin.pruneTags true
Run Code Online (Sandbox Code Playgroud)
Vas*_*h K 17
对我来说,以下似乎有效。
git pull --tags
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
134130 次 |
最近记录: |