我知道git push --tags
是对普通旧git push
的单独操作的原因。推动标签应该是一个有意识的选择,因为你不想意外推动标签。没关系。但有没有办法将两者结合在一起? (除了git push && git push --tags
。)
答案 0 :(得分:457)
从git 2.4.1开始,您可以
git config --global push.followTags true
如果设置为true,则默认启用--follow-tags选项。您可以在推送时通过指定--no-follow-tags。
覆盖此配置
自git 1.8.3 (April 22d, 2013),以来,您不再需要执行2个命令来推送分支,然后推送标签:
新的“
--follow-tags
”选项告诉“git push
”在推出分支时推送相关的带注释标签。
现在,您可以在推送新提交时尝试:
git push --follow-tags
这不会推送所有本地标签,只会推送使用git push
推送的提交。
Git 2.4.1 +(2015年第二季度)将引入选项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
下的所有引用都被推送, 除了在命令行中明确列出的refspec )
您还有此条目“Pushing branches and tags with a single "git push" invocation”
ZoltánFüzesi刚刚在Git mailing list张贴了一个方便的小费:
我使用
.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
谨防,commented
为Aseem Kishore push = +refs/heads/*
将强行推送所有分支。
这就是我现在的情况,所以我们。
René Scheibe添加this interesting comment:
--follow-tags
参数具有误导性,因为只考虑.git/refs/tags
下的标记 如果运行git gc
,则代码会从.git/refs/tags
移至.git/packed-refs
。之后git push --follow-tags ...
不再按预期工作。
答案 1 :(得分:1)
刚刚在 git 2.31.0 上测试:git push <refspec> --tags
。这样做的优点是它会推送所有标签,而不仅仅是像 --follow-tags
这样的带注释的标签。
答案 2 :(得分:0)
也许这可以帮助某人:
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
答案 3 :(得分:0)
Git GUI有一个PUSH按钮-请原谅双关语,它打开的对话框中有一个标签复选框。
我从命令行推送了一个没有标签的分支,然后再次尝试使用上面描述的--follow-tags
选项来推送该分支。该选项描述为以下带注释的标记。我的标签是简单的标签。
我修复了一些问题,用修复程序标记了提交(以便同事可以选择修复程序),然后更改了软件版本号并标记了我创建的发行版(以便同事可以克隆该发行版)。
Git返回说一切都是最新的。它没有发送标签!也许是因为标签没有注释。也许是因为分支上没有新内容。
当我使用Git GUI进行类似的推送时,标签已发送。
暂时,我将使用Git GUI而不是命令行和--follow-tags
将更改推送到我的遥控器上。
答案 4 :(得分:0)
@自Git 2.4起
git push --atomic origin <branch name> <tag>