我知道为什么git push——tags是一个单独的操作,而不是普通的git push。推标签应该是一个有意识的选择,因为你不想不小心推到一个标签。这很好。但是有没有办法把两者结合起来呢?(除了git push && git push——标签。)


当前回答

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

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

我修复了一些东西,在提交中标记了修复(这样同事们就可以选择修复),然后更改了软件版本号,并标记了我创建的版本(这样同事们就可以克隆那个版本)。

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

当我用Git GUI做类似的推送时,标签被发送了。

目前,我将使用Git GUI而不是命令行和——follow-tag将更改推送到远程。

其他回答

@since Git 2.4

Git推送——原子起源<分支名称> <标签>

试着everythig。

对我来说,避免在Gitlab上为同一个提交触发两个CI构建的唯一解决方案是:

git push -o ci.skip && git push --tags

@user1160006在评论中建议。

我在这里重复一遍,作为一个适当的答案,让感兴趣的人更容易看到它。 作为对我的提醒;)

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

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

我修复了一些东西,在提交中标记了修复(这样同事们就可以选择修复),然后更改了软件版本号,并标记了我创建的版本(这样同事们就可以克隆那个版本)。

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

当我用Git GUI做类似的推送时,标签被发送了。

目前,我将使用Git GUI而不是命令行和——follow-tag将更改推送到远程。

刚刚在git 2.31.0上测试:git push <refspec>——tags。这样做的好处是它推送ALL标签,而不仅仅是——follow-tags这样的注释标签。

假设你在github上创建了一个新的repo。所以第一步是克隆repo:git克隆{你的repo URL}

你做你的工作,添加一些文件,代码等,然后推动你的变化:

git add .
git commit -m "first commit"
git push

现在我们的变更在主分支中。让我们创建一个标签:

git tag v1.0.0                    # creates tag locally     
git push origin v1.0.0            # pushes tag to remote

如果你想删除标签:

git tag --delete v1.0.0           # deletes tag locally    
git push --delete origin v1.0.0   # deletes remote tag