推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构建,当你实现这种自动化时,@fuzgit-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