我们可以设置一个Git默认值来在远程拉取期间获取所有标记吗?
我目前有一个git远程设置,如下所示:我们可以设置一个Git默认值来在远程拉取期间获取所有标记吗?,git,Git,我目前有一个git远程设置,如下所示: [remote "upstream"] url = <redacted> fetch = +refs/heads/*:refs/remotes/upstream/* [远程“上游”] url= fetch=+refs/heads/*:refs/remotes/upstream/* 当我在分支主机上发布git pull时,所有远程磁头都被提取到remotes/upstream中,然后remotes/upstream/maste
[remote "upstream"]
url = <redacted>
fetch = +refs/heads/*:refs/remotes/upstream/*
[远程“上游”]
url=
fetch=+refs/heads/*:refs/remotes/upstream/*
当我在分支主机上发布git pull
时,所有远程磁头都被提取到remotes/upstream中,然后remotes/upstream/master合并到master中。可以访问的任何标签也可以同时获取,这非常方便
我想git pull
从远程获取所有标签,而不仅仅是那些可以直接从头部获取的标签。我最初尝试设置tagopt==--tags
,但发现这只会导致获取标记,从而破坏了一切。(Junio甚至说这是一个错误)
除了远程磁头之外,是否有办法使git pull默认获取所有远程标记?您应该能够通过在本地配置中添加标记的refspec来实现这一点。具体地说:
[remote "upstream"]
url = <redacted>
fetch = +refs/heads/*:refs/remotes/upstream/*
fetch = +refs/tags/*:refs/tags/*
[远程“上游”]
url=
fetch=+refs/heads/*:refs/remotes/upstream/*
fetch=+refs/tags/*:refs/tags/*
一个简单的git获取——标记对我来说很有效。很简单。做一个
git fetch --all
--force
选项用于刷新本地标记。主要是当您有浮动标签时:
git fetch --tags --force
git pull选项还有--force
选项,描述如下:
当git fetch与:refspec一起使用时,它拒绝
更新本地分支,除非远程分支
它是人类的后代。此选项将覆盖该选项
检查
但是,根据——无标签的文档:
默认情况下,指向从中下载的对象的标记
远程存储库在本地获取和存储
如果默认语句不是限制,那么您也可以尝试
git pull --force
对我来说,下面的方法似乎奏效了
git pull --tags
我在kernel.org上使用magit
[remote "upstream"]
url = <redacted>
fetch = +refs/heads/*:refs/remotes/upstream/*
tagOpt = --tags
[远程“上游”]
url=
fetch=+refs/heads/*:refs/remotes/upstream/*
tagOpt=--标记
Aha,我从未意识到您可以有多个提取行,我猜想最后一行会覆盖。这非常好而且明确。注意在git 2.21中使用它,请参阅是否有任何方法可以通过git
命令添加第二个refspect,而不是直接编辑本地配置?这样,指导初级开发人员做什么就容易多了。@Fizzix也许应该将标题改为“默认”。这篇文章回答了我的问题。这对我来说不起作用。我可以看到带有git ls remote
的标签。这可能无法回答确切的问题,但它确实回答了标题中的问题,这就是我通过web搜索找到它的方式。提醒自己:确保您确实首先推送了标签(不会自动工作):git-push-origin
使用tagopt
解决方案不再是错误配置;这将获取除正常获取的标记之外的所有标记。git pull--force
不包括git fetch--tags--force
仅获取标记,您可能的意思是:`git fetch--tags`已经有了关于git fetch--tags
的答案。我想给出另一个答案。pull=fetch+merge。因此,取回也会发生。