当我签出远程git标签时使用这样的命令:
git checkout -b local_branch_name origin/remote_tag_name
Run Code Online (Sandbox Code Playgroud)
我得到这样的错误:
error: pathspec `origin/remote_tag_name` did not match any file(s) known to git.
Run Code Online (Sandbox Code Playgroud)
当我使用git tag命令时,我可以找到remote_tag_name.
我们在git中使用标签作为部署过程的一部分.有时,我们希望通过从远程存储库中删除它们来清理这些标记.
这非常简单.一个用户在一组命令中删除本地标签和远程标签.我们有一个结合了两个步骤的小shell脚本.
第二个(第3个,第4个......)用户现在拥有不再反映在遥控器上的本地标签.
我正在寻找一个类似于git remote prune origin清除本地跟踪已删除远程分支的分支的命令.
或者,可以使用列出远程标记的简单命令来比较通过返回的本地标记git tag -l.
在Git中获取最新标签的最简单方法是什么?
git tag a HEAD
git tag b HEAD^^
git tag c HEAD^
git tag
Run Code Online (Sandbox Code Playgroud)
输出:
a
b
c
Run Code Online (Sandbox Code Playgroud)
我应该编写一个脚本来获取每个标记的日期时间并进行比较吗?
我在存储库中有一堆未注释的标记,我想知道它们指向哪个提交.是否有一个命令只列出标签及其提交SHA?检查标签并查看HEAD对我来说似乎有点过于费力.
我在通过回复之后意识到,我真正想要的只是简单地看一下导致标签的历史,这就git log <tagname>足够了.
标记为答案的答案对于获取标签及其提交列表很有用,这就是我的要求.有一点shell hackery我敢肯定可以将它们转换为SHA + Commit消息.
假设我已经使用错误修复分叉了一个节点模块,我想在功能分支上使用我的固定版本,直到错误修复被合并和发布.
我怎么会引用我的固定版本在dependencies我的package.json?
我去年从Subversion转到Git作为我的日常VCS,我仍在努力把握"Git-think"的细节.
最近困扰我的那个是"轻量级"与注释与签名标签.对于所有实际用途来说,注释标签优于轻量级标签似乎是普遍接受的,但我发现为什么情况的解释似乎总是归结为"因为最佳实践"或"因为它们是不同的".不幸的是,这些都是非常不满意的论据而不知道为什么它是最佳实践或这些差异如何与我的Git用法相关.
当我第一次切换到Git时,轻薄的标签似乎是自切片面包以来最好的东西; 我可以指出一个提交并说"那是1.0".我很难掌握标签如何比这更好,但我当然不能相信世界的Git专家更喜欢任意注释标签!那么喧哗什么呢?
(奖励积分:为什么我需要签署一个标签?)
编辑
我已经成功地确信注释标签是一件好事 - 知道谁标记,何时重要!作为后续行动,有关良好标签注释的任何建议吗?两者都git tag -am "tagging 1.0" 1.0试图总结提交日志,因为上一个标记感觉就像丢失策略一样.
我希望git列出所有标签以及完整的注释或提交消息.这样的事情很接近:
git tag -n5
Run Code Online (Sandbox Code Playgroud)
这正是我想要的,除了它只显示标签消息的前5行.
我想我可以使用非常大的数字.我在这里可以使用的最高数字是多少?每台电脑都一样吗?
更新:我有很多时间考虑这个问题,现在我认为如果它非常长,我不一定要展示整个信息.这样的事似乎适合我:
git tag -n99
Run Code Online (Sandbox Code Playgroud)
如果标签消息真的超过99行,我不想看到所有这些.但是Git极其复杂和灵活.在什么情况下,这不是最好的解决方案?我注意到许多已发布的解决方案都使用了-lotion,但这不只是指定要搜索的模式吗?
如果我想标记当前提交.我知道以下两个命令行都有效:
git tag <tagname>
Run Code Online (Sandbox Code Playgroud)
和
git tag -a <tagname> -m '<message>'
Run Code Online (Sandbox Code Playgroud)
这些命令有什么区别?
一个很好而且简单的问题 - "git fetch"的功能是一个严格的子集git fetch --tags吗?
即如果我跑git fetch --tags,有没有理由立即直接跑git fetch?
怎么样git pull和git pull --tags?同样的情况?
我想强制推送,例如,我的标签1.0.0到我的远程master分支.
我现在正在做以下事情:
git push production +1.0.0:master
Run Code Online (Sandbox Code Playgroud)
我想强制推送,因为我关心的是1.0.0标签内的代码被推送到master远程存储库的分支.
我究竟做错了什么?
当我通过SSH连接到我的Git存储库并执行的服务器时git branch -l,我也看不到master列出的分支.
git tag -l从远程Git存储库内部运行后,我看到它master已列出,这意味着当我运行以下代码时:
git push production 1.0.0:master
Run Code Online (Sandbox Code Playgroud)
它实际上推送了标签并创建了一个名为 master而不是新分支的标签.
我想基本上将标签的内容推1.0.0送到master远程Git存储库的分支.