推送git提交&标签同时

时间:2010-09-19 09:21:47

标签: git

我知道git push --tags是对普通旧git push的单独操作的原因。推动标签应该是一个有意识的选择,因为你不想意外推动标签。没关系。但有没有办法将两者结合在一起? (除了git push && git push --tags。)

5 个答案:

答案 0 :(得分:457)

2015年5月更新

git 2.4.1开始,您可以

git config --global push.followTags true
  

如果设置为true,则默认启用--follow-tags选项。您可以在推送时通过指定--no-follow-tags。

覆盖此配置

2013年4月更新

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?”。

原始答案,2010年9月

核选项将是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

Git GUI有一个PUSH按钮-请原谅双关语,它打开的对话框中有一个标签复选框。

我从命令行推送了一个没有标签的分支,然后再次尝试使用上面描述的--follow-tags选项来推送该分支。该选项描述为以下带注释的标记。我的标签是简单的标签。

我修复了一些问题,用修复程序标记了提交(以便同事可以选择修复程序),然后更改了软件版本号并标记了我创建的发行版(以便同事可以克隆该发行版)。

Git返回说一切都是最新的。它没有发送标签!也许是因为标签没有注释。也许是因为分支上没有新内容。

当我使用Git GUI进行类似的推送时,标签已发送。

Tags sent with Git GUI

暂时,我将使用Git GUI而不是命令行和--follow-tags将更改推送到我的遥控器上。

答案 4 :(得分:0)

@自Git 2.4起

git push --atomic origin <branch name> <tag>