我知道 git push --tags 是与普通旧版 git push 不同的操作的原因。推送标签应该是一个有意识的选择,因为您不想意外地推送一个标签。没关系。但是有没有办法把两者结合起来呢? (除了 git push && git push --tags。)
最佳答案
正如最初在 this 中提到的那样通过 SoBeRich 回答, 在我的 own answer , 自 git 2.4.x
git push --atomic origin <branch name> <tag>
(注意:这实际上是 work with HTTPS only with Git 2.24 )
截至git 2.4.1 , 你可以这样做
git config --global push.followTags true
If set to true enable --follow-tags option by default.
You may override this configuration at time of push by specifying --no-follow-tags.
如 this thread by Matt Rogers answering Wes Hurd 中所述:
--follow-tags 只推送带注释的标签。
git tag -a -m "I'm an annotation" <tagname>
那将被推送(而不是 git tag <tagname> ,一个轻量级标签,它不会被推送,就像我 mentioned here )
自 git 1.8.3 (April 22d, 2013) ,您不再需要执行 2 个命令来推送分支,然后推送标签:
The new "
--follow-tags" option tells "git push" to push relevant annotated tags when pushing branches out.
您现在可以在推送新提交时尝试:
git push --follow-tags
虽然这不会推送 所有 本地标签,但只会推送由 git push 推送的提交引用的标签。 .
Git 2.4.1+(2015 年第 2 季度)将引入选项 push.followTags : 参见“How to make “ git push ” include tags within a branch?”。
核选项将是 git push --mirror , 这将把所有引用推到 refs/ 下.
您也可以在当前分支提交中只推送一个标签:
git push origin : v1.0.0
您可以结合 --tags带有 refspec 的选项,例如:
git push origin --tags :
(因为 --tags 表示:refs/tags 下的所有引用都被推送,除了在命令行中明确列出的引用规范)
您还有这个条目“Pushing branches and tags with a single "git push" invocation”
A handy tip was just posted to the Git mailing list by Zoltán Füzesi:
I use
.git/configto solve this:
[remote "origin"]
url = ...
fetch = +refs/heads/*:refs/remotes/origin/*
push = +refs/heads/*
push = +refs/tags/*
With these lines added
git push originwill upload all your branches and tags. If you want to upload only some of them, you can enumerate them.Haven't tried it myself yet, but it looks like it might be useful until some other way of pushing branches and tags at the same time is added to git push.
On the other hand, I don't mind typing:$ git push && git push --tags
小心,如commented通过 Aseem Kishore
push = +refs/heads/*将强制推送所有分支。
This bit me just now, so FYI.
René Scheibe添加 this interesting comment :
The
--follow-tagsparameter is misleading as only tags under.git/refs/tagsare considered.
Ifgit gcis run, tags are moved from.git/refs/tagsto.git/packed-refs. Afterwardsgit push --follow-tags ...does not work as expected anymore.
关于git - 同时推送 git 提交和标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3745135/
我试图使用yard记录一些Ruby代码,尽管我所做的正是所描述的here或here#@param[Integer]thenumberoftrials(>=0)#@param[Float]successprobabilityineachtrialdefinitialize(n,p)#initialize...end虽然我仍然得到这个奇怪的错误@paramtaghasunknownparametername:the@paramtaghasunknownparametername:success然后生成的html看起来很奇怪。我称yard为:$yarddoc-mmarkdown我做错了什么?
我有一个div,它根据表单是否正确提交而改变。我想知道是否可以检查类的特定元素?开始元素看起来像这样。如果输入不正确,添加错误类。 最佳答案 试试这个:browser.div(:id=>"myerrortest").class_name更多信息:http://watir.github.com/watir-webdriver/doc/Watir/HTMLElement.html#class_name-instance_method另一种选择是只查看具有您期望的类的div是否存在browser.div((:id=>"myerrortes
文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g
我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“
关于如何使用git设置类似Dropbox的服务,您有什么建议吗?您认为git是解决此问题的合适工具吗?我在考虑使用git+rush解决方案,你觉得怎么样? 最佳答案 检查这个开源项目:https://github.com/hbons/SparkleShare来自项目的自述文件:Howdoesitwork?SparkleSharecreatesaspecialfolderonyourcomputer.Youcanaddremotelyhostedfolders(or"projects")tothisfolder.Theseprojec
我编写了一个非常简单的“部署”脚本,作为我的裸git存储库中的post-updateHook运行。变量如下livedomain=~/mydomain.comstagingdomain=~/stage.mydomain.comgitrepolocation=~/git.mydomain.com/thisrepo.git(bare)core=~/git.mydomain.com/thisrepo.gitcore==addedremoteintoeachlive&stagegitslive和stage都初始化了gitrepos(非裸),我已经将我的裸仓库作为远程添加到它们中的每一个(名为co
我正在安装gitlabhq,并且在Gemfile中有对某些资源的“git://...”的引用。但是,我在公司防火墙后面,所以我必须使用http://。我可以手动编辑Gemfile,但我想知道是否有另一种方法告诉bundler使用http://作为git存储库? 最佳答案 您可以通过运行gitconfig--globalurl."https://".insteadOfgit://或通过将以下内容添加到~/.gitconfig:[url"https://"]insteadOf=git://
在previousquestion中我想出了如何在多个服务器上启动经过密码验证的sshsession来运行单个命令。现在我需要能够执行“sudo”命令。问题是,net-ssh-multi没有分配sudo需要运行的伪终端(pty),导致以下错误:[127.0.0.1:stderr]sudo:sorry,youmusthaveattytorunsudo根据documentation,可以通过调用channel对象的方法来分配伪终端,但是,以下代码不起作用:它会生成上面的“notty”错误:require'net/ssh'require'net/ssh/multi'Net::SSH::Mul
我有这样的HTML代码:Label1Value1Label2Value2...我的代码不起作用。doc.css("first").eachdo|item|label=item.css("dt")value=item.css("dd")end显示所有首先标记,然后标记标签,我需要“标签:值” 最佳答案 首先,您的HTML应该有和中的元素:Label1Value1Label2Value2...但这不会改变您解析它的方式。你想找到s并遍历它们,然后在每个你可以使用next_element得到;像这样:doc=Nokogiri::HTML(
我有以下不起作用的代码:=form_for(resource,:as=>resource_name,:url=>session_path(resource_name),:html=>{:class=>"well"})do|f|=f.label:email=f.email_field:email=f.label:password=f.password_field:password-ifdevise_mapping.rememberable?%p=f.label:remember_me,:class=>"checkbox"=f.check_box:remember_me,:class=>"