Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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描述匹配隐藏的ref_Git - Fatal编程技术网

如何使用git描述匹配隐藏的ref

如何使用git描述匹配隐藏的ref,git,Git,似乎是一个很好的匹配版本号的解决方案,但我的场景有点不同 我要为生成的版本号创建隐藏引用(因此默认情况下,它们不会传递给其他客户端)。我不想让客户在他们的回迁中看到一堆版本混乱 问题是,-match仅适用于标记,即使您使用--all标志 例如: git更新参考文件/_v.master.0.1 c2897c8338e02b99644640f3afb829c04cb48439 这将创建隐藏的ref git描述——所有c2897c8338e02b99644640f3afb829c04cb48439 _

似乎是一个很好的匹配版本号的解决方案,但我的场景有点不同

我要为生成的版本号创建隐藏引用(因此默认情况下,它们不会传递给其他客户端)。我不想让客户在他们的回迁中看到一堆版本混乱

问题是,-match仅适用于标记,即使您使用--all标志

例如:

git更新参考文件/_v.master.0.1 c2897c8338e02b99644640f3afb829c04cb48439

这将创建隐藏的ref

git描述——所有c2897c8338e02b99644640f3afb829c04cb48439
_v、 master.0.1[显示此项]

但这并没有返回任何结果:

git描述——匹配——所有c2897c8338e02b99644640f3afb829c04cb48439
致命:未找到任何名称,无法描述任何内容

我在“匹配”中看到“只考虑与给定的GLUB(7)模式匹配的标签”,但这似乎是跛行的,匹配应该适用于任何RF类型,假设其他修饰符(-ALL -标签等)限制了REF类型的范围。 我还有别的办法吗?我想到的一种方法是在一个客户机上创建标记,并将它们(在推送和获取时)映射到源的隐藏引用,但这似乎需要做很多额外的工作。如果不是客户端,我上面提到的ref匹配是否可以从API获得


提前谢谢

您必须使用Git 2.14.x/2.15(2017年第4季度)检查这一点

git descripe--match
”已被教导如何与 “
--all
”选项

参见(2017年9月20日)作者。
(于2017年9月29日被合并)

描述
:教
匹配
处理分支和远程 当git descripe使用
--match
时,它基本上只匹配标记 即使指定了
--all
参数,也将忽略该参数

还可以通过匹配分支名称和
$remote\u name/$remote\u branch\u name
来修复它, 对于远程跟踪引用,使用指定的模式。
相应地更新文档并添加测试

它还涉及消极模式:

例如,假设您希望找到第一个正式发布标签 包含某个提交的。如果我们假设官方发布标签 格式为“
v*
”,预发布候选文件在其版本中包括“
*rc*
” 名称,我们现在可以找到引入提交的第一个发布标签
abcdef


请注意,Git 2.16.x/2.17(2018年第1季度)将恢复“
Git descripe--all
”的正确输出 参见(2017年12月11日)作者。
(于2018年1月23日被合并)

描述
:在描述带有嵌入名称的标记时,在“
标记/
”前面加上前缀 “
git descripe
”命令的手册页解释了预期的 使用
--all
选项时输出,即完整参考路径为 显示,包括
标题/
标记/
前缀

什么时候教git描述 为了在输出之前验证带注释的标记名”,2008年2月28日,Git v1.5.5-rc0)使Git更喜欢带注释标记的嵌入式名称,它意外地更改了输出 设置
--all
标志时的格式,仅打印标签的名称 没有前缀

检查是否指定了
--all
,并为此重新添加“
标记/
”前缀 修复回归的特殊情况


当“”发现标记名为
A
的带注释标记是解释提交
C
的最佳名称,并且标记存储在
refs/tags
层次结构中的一个“
error
”位置时,例如
refs/tags/B
,该命令发出警告消息,但使用了
A
(不是
B
)描述
C

如果
C
正好位于标记处,则描述输出将为“
A
”,但“不等于”

Git 2.27(2020年第2季度)更改了命令的行为,使用了“长”形式,即
A-0-gOBJECTNAME
,这是由
rev parse
正确解释的

参见(2020年2月20日)作者。
(于2020年3月27日合并)

:基于定位错误的标记强制使用名称的长格式 帮助人:Matheus Tavares
帮助人:杰夫·金

带注释的标记有两个名称

  • 它位于
    refs/tags
    层次结构和
  • 记录在对象本身的“
    标记
    ”字段中的标记名
它们通常应该匹配

由于(“在输出前教验证带注释的标记名”,2008-02-28,Git v1.5.5-rc0--),使用带注释标记描述的提交将其名称基于对象的标记名

虽然这是一个经过深思熟虑的设计决策,以便更容易与其他人谈论标签,但即使这些标签的名称与创建者给出的名称不同,它也有一个缺点

至少在现代git中,“
git descripe
”的输出应该可用作对象名,以命名给予“
git descripe
”命令的确切提交。

当两个名称不同时,在描述此类标记直接指向的提交时,使用标记名会破坏此属性

作为“
v1.0
”的带注释标记Bob可能位于
ref
层次结构中的“
refs/tags/v1.0-Bob
”,并且从“”输出的内容可能是“
v1.0
”,但可能在“
refs/tags/v1.0
”本地没有任何标记,或者可能有另一个标记指向不同的对象

请注意,如果所描述的提交不是由这样一个错误定位的标记直接指向的,那么这不会是一个问题

在上一段的示例中,描述其父级为
v1.0-bob
的提交将导致“
v1.0git describe --contains --match="v*" --exclude="*rc*" abcd