一个又好又简单的问题-- "git fetch“函数是git fetch --tags的严格子集吗?
也就是说,如果我运行git fetch --tags,有没有理由在之后立即运行git fetch?
那git pull和git pull --tags呢?同样的情况?
发布于 2009-07-30 17:53:00
注意:此答案仅适用于GITV1.8及更早版本。
其中大部分已经在其他答案和评论中提到了,但这里有一个简洁的解释:
git fetch获取所有分支头(或由remote.fetch配置选项指定的所有分支头)、它们所需的所有提交以及可从这些分支到达的所有标记。在大多数情况下,所有标签都是可访问的,这个way.git fetch --tags获取所有标签,它们所需的所有提交。它不会更新分支标题,即使它们可以从获取的标记中访问。摘要:如果你真的想完全更新,只使用fetch,你必须同时做这两件事。
它也不是“两倍慢”,除非你指的是在命令行上输入,在这种情况下,别名可以解决你的问题。这两个请求基本上没有开销,因为它们请求的是不同的信息。
发布于 2009-07-30 13:58:34
我要亲自回答这个问题。
我已经确定这是有区别的。"git fetch -- tags“可能会带来所有的标签,但它不会带来任何新的提交!
事实证明,必须这样做才能完全“更新”,即在没有合并的情况下复制了一个"git pull“:
$ git fetch --tags
$ git fetch这是一个遗憾,因为它的速度是原来的两倍。如果"git fetch“有一个选项来做它通常做的事情,和就会引入所有的标签。
发布于 2013-02-19 06:57:53
这里的一般问题是git fetch将获取+refs/heads/*:refs/remotes/$remote/*。如果这些提交中的任何一个都有标签,那么这些标签也会被获取。但是,如果遥控器上的任何分支都无法访问标记,则不会获取这些标记。
--tags选项将refspec切换为+refs/tags/*:refs/tags/*。你可以让git fetch把这两个都抓起来。我非常确定要做一个git fetch && git fetch -t,你可以使用以下命令:
git fetch origin "+refs/heads/*:refs/remotes/origin/*" "+refs/tags/*:refs/tags/*"如果您想将其设置为此存储库的默认设置,则可以在默认fetch中添加第二个refspec:
git config --local --add remote.origin.fetch "+refs/tags/*:refs/tags/*"这将在.git/config中为此遥控器添加第二个fetch =行。
我花了一段时间为一个项目寻找处理这个问题的方法。这就是我想出来的。
git fetch -fup origin "+refs/*:refs/*"在我的例子中,我想要这些特性
refspec从远程抓取所有的头和标记,因此在refspec
refs/*:refs/*-p-f为
+https://stackoverflow.com/questions/1204190
复制相似问题