使用git pull从远程获取所有标签

我目前有一个像下面这样的git远程设置:

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*

当我在分支主机上发出git pull时,所有远程主机都被取入远程/上游,然后远程/上游/主机被合并到主机中。 任何可以到达的标签也可以同时获取,这非常方便。

我希望git pull能够从远程获取所有标签,而不仅仅是那些可以直接从头部到达的标签。 我最初尝试tagopt == --tags ,但发现这导致只有标签被抓取,从而打破了一切。 (Junio甚至说这是一个可怕的错误配置)。

除了远程头部之外,有没有办法让git pull默认获取所有远程标签?


您应该可以通过为本地配置添加标签的refspec来实现此目的。 具体来说:

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*
    fetch = +refs/tags/*:refs/tags/*

一个简单的git fetch --tags为我工作。


--force选项对于刷新本地标签非常有用。 主要是如果你有浮动标签:

git fetch --tags --force

git pull选项也有--force选项,描述也是一样的:

当git fetch与:refspec一起使用时,它会拒绝更新本地分支,除非它获取的远程分支是其后代。 该选项将覆盖该检查。

但根据--no-tags的文档:

默认情况下,指向从远程存储库下载的对象的标签将在本地​​获取并存储。

如果该默认语句不是限制,那么您也可以尝试

git pull --force
链接地址: http://www.djcxy.com/p/16019.html

上一篇: Fetching all tags from a remote with git pull

下一篇: git merge upstream/master "already up