- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据 git name-rev doc ,
Finds symbolic names suitable for human digestion for revisions given in any format parsable by git rev-parse.
最佳答案
Marek R's answer是正确的,但有点不完整。
本质上,git name-rev
想出一个名字加上一些相对表达式,如果需要,从名字移动到提交,而 git describe
想出一些名称——通常是标签名称,但也可能是其他名称——如果需要,再加上一些额外的字符串,这不是特别“相对”:在某些情况下有一个计数,但它不如计数那么有用在 git name-rev
.如 git describe
无法使用原始名称,它添加了 g
和一个缩写的哈希 ID:
$ git describe
v2.19.1-272-gf84b9b09d4
$ git name-rev HEAD
HEAD master
--all
至
git describe
的参数,
git describe
确实使用分支名称,但输出不同:
$ git describe --all
heads/master
refs/tags/master
以及—解析
master
单独生成与标签关联的哈希 ID,而不是分支名称。
git describe
可以加
-dirty
如果工作树与提交不匹配,并且——从 Git 2.16.0 开始——可以产生
name:pathname
string 为您提供一个命名特定存储 blob 的表达式:
$ git describe HEAD:Makefile
v2.19.0-237-ge3d4ff037d:Makefile
git name-rev
可以管理。
What is the use of [
git name-rev
]?
git describe
的目的说起:
git describe
非常常用来生成特定构建的有用描述。因为它默认只使用标签,所以它的输出相对稳定(好吧,如果我们假设标签永远不会改变的话)。当
git describe
说
v2.19.1-272-gf84b9b09d4
, 我们知道:
v2.19.1
之后的一段时间f84b9b09d4
开头git describe
同一提交的输出可能是相同的(尽管如果我们添加一个新的带注释的标签,它们可能会改变)。可通过
v2.19.1..f84b9b09d4
获得的 272 次提交的计数:
$ git rev-list --count v2.19.1..f84b9b09d4
272
git rev-parse v2.19.1-272-gf84b9b09d4
将始终产生
f84b9b09d40408cf91bbc500d9f190a7866c3e0f
,不管我明天还是下周还是明年再做,只要标记
v2.19.1
留在原地。如果我们使用这个字符串作为构建标识符,我们避免使用分支名称并注意构建是否“脏”,我们可以立即判断我们是否可以在以后轻松地再次重现相同的构建,如果是,如何(即,通过运行
git checkout v2.19.1-272-gf84b9b09d4
)。
git name-rev
说
master
或
master~3
或者无论如何,不能保证我明天可以回到那个存储库并使用相同的表达式来找到相同的提交。明年,它几乎可以肯定是错误的。所以
git name-rev
输出仅适用于一小段时间——基本上,直到您移动一些分支名称。
git name-rev
有一个技巧,
git describe
不会:它会解析它的标准输入,寻找看起来是哈希 ID 的东西。当它找到它们时,它会将它们复制到标准输出并添加
(expression)
,前提是哈希转换为名称:
$ X=$(git rev-parse master)
$ echo embedded $X hash | git name-rev --stdin
embedded f84b9b09d40408cf91bbc500d9f190a7866c3e0f (master) hash
$ Y=$(echo $X | sed s/f/0/)
$ echo embedded invalid $Y hash | git name-rev --stdin
embedded invalid 084b9b09d40408cf91bbc500d9f190a7866c3e0f hash
git log | git name-rev
并让所有这些提交哈希成为装饰哈希。但是,散列必须是完整的散列。相比:
$ git log --oneline -n 10 | git name-rev --stdin
f84b9b09d4 Sync with 2.19.1
cae598d998 Git 2.19.1
1958ad504b Sync with 2.18.1
268fbcd172 Git 2.18.1
44f87dac99 Sync with 2.17.2
6e9e91e9ca Git 2.17.2
1a7fd1fb29 fsck: detect submodule paths starting with dash
a124133e1e fsck: detect submodule urls starting with dash
e43aab778c Sync with 2.16.5
27d05d1a1a Git 2.16.5
$ git log --pretty=tformat:'%H %s' -n 10 | git name-rev --stdin
f84b9b09d40408cf91bbc500d9f190a7866c3e0f (master) Sync with 2.19.1
cae598d9980661a978e2df4fb338518f7bf09572 (tags/v2.19.1^0) Git 2.19.1
1958ad504befa6a09c475cc8ab9de43b359de137 (tags/v2.19.1~1) Sync with 2.18.1
268fbcd172cdb306e8a3e7143cc16677c963d6cd (tags/v2.18.1^0) Git 2.18.1
44f87dac99574a8073ffb1ba8b10bd4d3945f61b (tags/v2.18.1~1) Sync with 2.17.2
6e9e91e9cae74cd7feb9300563d40361b2b17dd2 (tags/v2.17.2^0) Git 2.17.2
1a7fd1fb2998002da6e9ff2ee46e1bdd25ee8404 (tags/v2.17.2~1) fsck: detect submodule paths starting with dash
a124133e1e6ab5c7a9fef6d0e6bcb084e3455b46 (tags/v2.17.2~2) fsck: detect submodule urls starting with dash
e43aab778c72250e11eb00e31dc6be90072a1637 (tags/v2.17.2~3) Sync with 2.16.5
27d05d1a1a62273aa3749f4d0ab8a126ef11ff66 (tags/v2.16.5^0) Git 2.16.5
关于git - git name-rev 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52666961/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!