我已经将一个远程Git存储库克隆到了我的笔记本电脑,然后我想添加一个标签,所以我跑了
git tag mytag master
Run Code Online (Sandbox Code Playgroud)
当我git tag在笔记本电脑上运行时,mytag会显示标签.然后我想将它推送到远程存储库,所以我在所有客户端都有这个标签,所以我运行git push但是我收到了消息:
一切都是最新的
如果我去我的桌面并运行git pull然后git tag没有显示标签.
我还尝试对项目中的文件进行微小更改,然后将其推送到服务器.之后,我可以将更改从服务器拉到我的台式计算机,但git tag在台式计算机上运行时仍然没有标记.
如何将我的标签推送到远程存储库,以便所有客户端计算机都可以看到它?
我在GitHub中有一个存储库,我需要标记它.我在shell中标记,但在GitHub上它没有显示出来.我还有什么要做的吗?
我在shell中使用的命令是:
git tag 2.0
Run Code Online (Sandbox Code Playgroud)
现在当我键入git tag它时显示:
2.0
Run Code Online (Sandbox Code Playgroud)
所以似乎标签存在,对吗?
存储库是:https://github.com/keevitaja/myseo-pyrocms.
如何让这个标签显示在GitHub上?我的标签在哪里?
我去年从Subversion转到Git作为我的日常VCS,我仍在努力把握"Git-think"的细节.
最近困扰我的那个是"轻量级"与注释与签名标签.对于所有实际用途来说,注释标签优于轻量级标签似乎是普遍接受的,但我发现为什么情况的解释似乎总是归结为"因为最佳实践"或"因为它们是不同的".不幸的是,这些都是非常不满意的论据而不知道为什么它是最佳实践或这些差异如何与我的Git用法相关.
当我第一次切换到Git时,轻薄的标签似乎是自切片面包以来最好的东西; 我可以指出一个提交并说"那是1.0".我很难掌握标签如何比这更好,但我当然不能相信世界的Git专家更喜欢任意注释标签!那么喧哗什么呢?
(奖励积分:为什么我需要签署一个标签?)
编辑
我已经成功地确信注释标签是一件好事 - 知道谁标记,何时重要!作为后续行动,有关良好标签注释的任何建议吗?两者都git tag -am "tagging 1.0" 1.0试图总结提交日志,因为上一个标记感觉就像丢失策略一样.
我知道这两种命令之间的技术差异(没有-a的用法创建一个轻量级标签,它本质上是一个永远不会移动的分支,使用-a在Git的对象数据库中创建一个完整的对象,其中包括提交者的名字,电子邮件等).
问题是:我应该在我的项目中使用哪一个(例如,在Github上指示发布版本)?如果一个人比另一个人更受欢迎,为什么另一个选择存在呢?每个版本的用例有哪些?
我想在我的存储库中列出所有轻量级标签; 我能想到的最好的东西包括结合git for-each-ref,grep和cut,但似乎它会有点狡猾......
(虽然我们正在谈论它,但我们不妨谈论注释标签的相同事情:有人肯定会在某处对此感到疑惑.)
编辑:
通过lightweight标签,我的意思是那些不引用标签对象的标签引用.(换句话说,未注释的标签.)
您查看的每个git教程都对标记有明确的看法:一个应该始终使用带注释的标记,其中一个原因是它们被使用git describe.
但是,我没有看到使用git describe --tags中的任何不良内容,也将未注释的标记作为参考点.对于未注释的标签,还有什么其他的被认为是坏的吗?
我问,因为我刚刚将SVN项目转换为git.我实际上是在考虑为标签提供一个注释,但是如果不是一个令人担忧的多余的"我们项目的标记版本1.5"消息(它已被用作SVN注释),我应该放在那里?
带注释的标签对我来说似乎是件好事(你可以把东西标记为不同的作者并可能给出一个简短的描述),但是如果除了原始提交之外你没有任何有意义的说法,你是否应该真正使用它们?信息?
要么
在哪些情况下未注释的标签并不令人不满?
编辑:我不是在谈论签名注释标签(我理解在某些情况下签名标签的优势); 我只关心未注释和无符号注释之间的区别.
编辑2:附加另一个问题以扩大范围,并可能得到一些关于现实生活中最佳实践的深刻见解
什么时候你使用未加标签和你感到很难过的时候你怎么办?
我正在尝试使用由 GitVersion 在成功构建结束时的 GIT 提交确定的当前版本号设置标签。感觉我不能成为第一个这样做的人,但我正在努力寻找有用的东西。
Azure Devops Pipeline 在成功时获取源以“标记源”中有一项功能。我已经设置了它并设置为由我拥有的代理任务之一设置的变量(GitVersion)
我可以在调试日志中看到这个变量是由我添加到管道的 GitVersion 组件设置的。
2019-12-06T20:54:20.2390794Z ##[debug]Processed: ##vso[task.setvariable variable=GitVersion.MajorMinorPatch;]2.98.0
Run Code Online (Sandbox Code Playgroud)
但是,如果我就这样保留它,我会得到一个创建为“v$(GitVersion.MajorMinorPatch)”的标记,这意味着在创建标记时该变量不再存在。
标签格式帮助工具提示说
“标签格式可以是用户定义或预定义变量的组合,其范围为“全部”。例如:'$(Build.DefinitionName) $(Build.DefinitionVersion) $(Build.BuildId) $(Build .BuildNumber) $(My.Variable)'"
所以我猜问题是在管道期间创建的这个变量没有 All 的范围。
然后我尝试向“GitVersion.MajorMinorPatch”的管道添加一个管道变量,希望这是在正确的范围内,并希望当“task.setvariable”命令运行时,这会将这个变量值设置得更高范围变量。
但是在这种情况下,我只是创建了一个标签“v”。
所以我有点卡住了。不知何故,我需要能够在范围 ALL 上动态创建或设置一个变量,并使用我想在此处标记的值。
我真的很感激对此的任何想法。
当我已经拥有类似外观的git标签时,有没有办法在其名称中创建带正斜杠的git标签?
假设我有"1.16.0"标签,我想创建"1.16.0/1.0.0"标签:
$ git tag "1.16.0/1.0.0"
error: 'refs/tags/1.16.0' exists; cannot create 'refs/tags/1.16.0/1.0.0'
fatal: refs/tags/1.16.0/1.0.0: cannot lock the ref
Run Code Online (Sandbox Code Playgroud) 我了解人们总是需要一条消息来提交更改,但是何时以及为什么还需要标记一次提交?假设我进行了一些更改并使用
git add -A
git commit -m "add feature 1"
Run Code Online (Sandbox Code Playgroud)
现在
git tag -a -m "includes feature 1" v0.1
Run Code Online (Sandbox Code Playgroud)
问题是,何时才有意义。
我熟悉Git 如何为文件(blob)创建 SHA1 哈希值,但不熟悉如何为标签对象创建它们。如果我创建一个带注释的标签,我认为它们是,但是配方是什么?我如何在 Git 之外复制它(例如,在 Perl 或 Python 中)?
git ×9
git-tag ×6
tags ×3
github ×2
azure-devops ×1
git-commit ×1
git-push ×1
gitversion ×1
hash ×1
push ×1
repository ×1
sha1 ×1