我知道git push --tags与普通old分开进行操作的原因git push。推送标签应该是一个明智的选择,因为您不想意外地推送标签。没关系。但是有没有办法将两者结合在一起?(除了git push && git push --tags。)
--follow-tags从git 1.8.3开始有一个新选项
我知道git push --tags与普通old分开进行操作的原因git push。推送标签应该是一个明智的选择,因为您不想意外地推送标签。没关系。但是有没有办法将两者结合在一起?(除了git push && git push --tags。)
--follow-tags从git 1.8.3开始有一个新选项
Answers:
从git 2.4.1开始,您可以执行
git config --global push.followTags true
如果设置为true,则默认情况下启用--follow-tags选项。
您可以在推送时通过指定--no-follow-tags覆盖此配置。
正如马特·罗杰斯(Matt Rogers)在回答韦斯·赫德(Wes Hurd)时所说的那样:
--follow-tags 仅推送带注释的标签。
git tag -a -m "I'm an annotation" <tagname>
那将被推送(与git tag <tagname>轻量级标签相对,该轻量级标签不会被推送,正如我在这里提到的)
从git 1.8.3(2013年4月22日)开始,您不再需要执行2条命令来推送分支,然后再推送标签:
新的“
--follow-tags”选项告诉“git push”,以推动分支出来的时候推动相关附注的标签。
现在,当推送新的提交时,您可以尝试:
git push --follow-tags
但这不会推送所有本地标记,仅推送由.com引用的提交git push。
Git 2.4.1+(2015年第二季度)将引入该选项push.followTags:请参见“ 如何使“ git push”在分支内包含标签? ”。
核选项将是git push --mirror,它将把所有的参考文献推到下面refs/。
您还可以在当前分支提交中仅推送一个标签:
git push origin : v1.0.0
您可以将--tags选项与refspec 结合使用,例如:
git push origin --tags :
(自--tags装置:所有参考文献下refs/tags被推动,除了在命令行上明确列出refspecs)
您还拥有此条目“ 通过单个“ git push”调用来推送分支和标签 ”
ZoltánFüzesi 刚刚在Git邮件列表中发布了一个方便的提示:
我
.git/config用来解决这个问题:
[remote "origin"]
url = ...
fetch = +refs/heads/*:refs/remotes/origin/*
push = +refs/heads/*
push = +refs/tags/*
添加这些行后,
git push origin将上传您的所有分支和标签。如果您只想上传其中一些,则可以枚举它们。自己还没有尝试过,但是在将其他同时推送分支和标签的方式添加到git push中之前,它似乎很有用。
另一方面,我不介意键入:
$ git push && git push --tags
push = +refs/heads/*将强制推送您所有的分支。
刚才这有点伤我,仅供参考。
该
--follow-tags参数具有误导性,因为仅.git/refs/tags考虑下面的标签。
如果git gc运行,则标签从.git/refs/tags移至.git/packed-refs。之后git push --follow-tags ...无法再按预期工作了。
push = +refs/heads/*行强制推入所有分支。刚才这有点伤我了,仅供参考。
--follow-tagsgit 1.8.3中添加的标志,我可以配置git安装使其成为默认设置吗?
push.default(git-scm.com/docs/git-config)可以定义上推默认动作(nothing,matching,upstream,simple如在stackoverflow.com/a/10002469/6309)。您需要--follow-tag显式添加。
git push --follow-tags -f没有为我工作。
--follow-tags参数具有误导性,因为仅.git/refs/tags考虑下面的标签。如果git gc运行,则标签从.git/refs/tags移至.git/packed-refs。之后git push --follow-tags ...无法再按预期工作了。
也许这可以帮助某人:
1. git commit -a -m "msg"
2. git tag 0.1.0 // creates a new tag locally
3. git push origin tag 0.1.0 // pushes the tag & the code in the remote repo
Git GUI有一个PUSH按钮-赦免双关语,它打开的对话框有一个标签复选框。
我从命令行推送了一个没有标签的分支,然后再次尝试使用--follow-tags上面介绍的选项推送该分支。该选项描述为以下带注释的标记。我的标签是简单的标签。
我修复了一些问题,用修复程序标记了提交(以便同事可以选择修复程序),然后更改了软件版本号并标记了我创建的发行版(以便同事可以克隆该发行版)。
Git回来说一切都是最新的。它没有发送标签!也许是因为标签没有注释。也许是因为分支上没有新内容。
当我使用Git GUI进行类似的推送时,标签已发送。
目前,我将使用Git GUI(而非命令行和)将更改推送到我的遥控器--follow-tags。
git push && git push --tags?