Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
推git提交&;同时标记_Git - Fatal编程技术网

推git提交&;同时标记

推git提交&;同时标记,git,Git,我知道为什么gitpush--tags是普通的gitpush的单独操作。推标签应该是一个有意识的选择,因为你不想意外地推标签。那很好。但是有没有办法把两者结合在一起呢?(除了git推送和&git推送--tags)于2020年8月更新 如最初在我的答复中所述,如 如果设置为true,则默认情况下启用--跟随标记选项。 您可以通过指定--no follow标记在推送时覆盖此配置 如图所示: --跟随标记仅推送带注释的标记 git tag -a -m "I'm an annotation&q

我知道为什么
gitpush--tags
是普通的
gitpush
的单独操作。推标签应该是一个有意识的选择,因为你不想意外地推标签。那很好。但是有没有办法把两者结合在一起呢?(除了
git推送和&git推送--tags

于2020年8月更新 如最初在我的答复中所述,如

如果设置为true,则默认情况下启用--跟随标记选项。
您可以通过指定--no follow标记在推送时覆盖此配置

如图所示:

--跟随标记
仅推送带注释的标记

git tag -a -m "I'm an annotation" <tagname>
不过,这不会推送所有本地标记,只推送由提交引用的标记,这些标记是使用
git push
推送的

Git 2.4.1+(2015年第2季度)将引入选项
push.followTags
:参见“”

原始答复,2010年9月 nuclear选项将是
git push--mirror
,它将在
refs/
下推送所有ref

您还可以在当前分支提交时只推送一个标记:

git push origin : v1.0.0 
您可以将
--tags
选项与refspec组合,如:

git push origin --tags :
(因为
--tags
意味着:除了命令行上明确列出的refspec之外,还将推送
refs/tags
下的所有ref)


您还有此条目“”

佐尔坦·弗泽西(Zoltán Füzesi)刚刚在网站上发布了一条方便的提示:

我使用
.git/config
来解决这个问题:

添加这些行后,
git push origin
将上载所有分支和标记。如果您只想上传其中的一部分,可以枚举它们

我自己还没有尝试过,但在git push中添加其他同时推送分支和标记的方法之前,它可能会很有用。
另一方面,我不介意键入:

$ git push && git push --tags
小心,如

push=+refs/heads/*
强制推送所有分支

git tag -a -m "I'm an annotation" <tagname>
这刚刚咬了我一下,仅供参考


加上:

--follow tags
参数具有误导性,因为只考虑
.git/refs/tags
下的标记。
如果运行了
git gc
,标记将从
.git/refs/tags
移动到
.git/packed refs
。之后,
git推送--跟随标签…
不再像预期的那样工作


也许这有助于某人:

git tag 0.0.1                    # creates tag locally     
git push origin 0.0.1            # pushes tag to remote

git tag --delete 0.0.1           # deletes tag locally    
git push --delete origin 0.0.1   # deletes remote tag

GitGUI有一个按钮-请原谅双关语,它打开的对话框中有一个标记复选框

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

我已经修复了一些东西,用中的补丁标记了提交(这样同事们可以选择补丁),然后更改了软件版本号并标记了我创建的版本(这样同事们可以克隆该版本)

Git回来说一切都是最新的。它没有发送标签!可能是因为标签没有注释。也许是因为树枝上没有什么新东西

当我使用GitGUI进行类似的推送时,标签被发送了

目前,我将使用Git GUI将我的更改推送到我的遥控器上,而不是使用命令行和Git 2.4之后的
--follow标签


刚刚在git 2.31.0上测试的git push--atomic origin
git push--tags
。这样做的好处是它推送所有标记,而不仅仅是像
--follow tags这样的带注释的标记

git push和&git push--标记有什么问题?没有什么特别的,由于连接必须建立两次,因此速度较慢。请参见下面我的更新答案:由于git 1.8.3,有一个新的
--follow tags
选项。另一个不单独执行这些操作的原因是避免为同一个提交触发两个CI构建,当你实现这种自动化时,@fuz
git-push&&git-push--tags
将触发CI管道两次,尽管这在10年前可能已经无关紧要了。你链接到的帖子上的一条评论正确地指出,
push=+refs/heads/*
行强制推送你的所有分支。这一点我刚刚才明白,因此仅供参考。Re:git 1.8.3中添加的
--follow tags
标志,我可以配置我的git安装使其成为默认值吗?@TrevorBurnham否,只有
push.default
()的值可以定义推送时的默认操作(
匹配
上游
简单
,如中所示)。您需要添加
——显式地跟随标记。@VonC如果我想强制推送标记怎么办
git-push--follow-tags-f
对我不起作用。@static\u rtti我同意。我怀疑这主要是出于历史原因。同样,现在,一个全局设置允许您将其永久化,但是是的,这还不是默认设置。我使用git-2.21.0.windows.1尝试了您的解决方案,发现3只使用了“git commit-m”msg“在步骤1中,没有-a参数。这可能就是原因。谢谢你的跟进@RajeshGupta它不会推到远程。只是本地到原点。在你的三个命令之后运行
git status
,你会看到类似“你的分支比'origin/developer'领先1次提交(使用“git push”发布你的本地提交)”@RajeshGupta实际上你所建议的是有效的(很抱歉我最后的评论)。但是你在第三步有一点输入错误。它应该是git push origin 0.1.0
——您应该省略“tag”一词。那么它的效果真的很好。对我来说,甚至比--follow标签选项更好。不过,我发现这种方法还有另一个问题。我想知道为什么在开发分支上看不到任何相关的提交。然后我注意到在GithubUI-->“此提交不属于此存储库上的任何分支。”这很奇怪。任何ide
[remote "origin"]
    url = ...
    fetch = +refs/heads/*:refs/remotes/origin/*
    push = +refs/heads/*
    push = +refs/tags/*
$ git push && git push --tags
git tag 0.0.1                    # creates tag locally     
git push origin 0.0.1            # pushes tag to remote

git tag --delete 0.0.1           # deletes tag locally    
git push --delete origin 0.0.1   # deletes remote tag