通过这样做,您可以在本地存储库中获取指向特定提交的标记:
git tag --points-at <commit-hash>或者这个:
git describe --exact-match <commit-hash>对于远程存储库来说,这也是可能的,甚至不需要克隆存储库吗?
发布于 2017-10-03 02:49:18
git ls-remote -t <remote> | grep <commit-hash>git ls-remote列出了远程存储库中的所有引用及其sha1值。-t仅限于标记。如果您位于本地git存储库下,并且远程是origin,则可以省略<remote>。如果指定<remote> (如https://github.com/foo/bar.git ),则可以在任何地方运行该命令。如果命令中存在-t,则必须在<remote>之前使用<remote>。在git-ls-远程可以看到更多信息。
更新:
不,没有类似于--points-at for git ls-remote的东西。如果您知道一个标记名,git ls-remote <remote> <tag_name>将返回sha和标记,但不可能从sha返回到标记名。
标签有两种类型。一个是轻量级标记,另一个是带注释的标记。格式化器只是一个参考,而后者是一个git对象。Git有四种对象:commit、tag、tree和blob。
如果v1.0是一个轻量级标记,那么v1.0和v1.0^{}是相同的。
如果v1.0是一个anotated标记,那么v1.0是一个标记对象,v1.0^{}是它所引用的提交。作为一个标记,v1.0和v1.0^{}对于许多git命令是相同的,例如git log、git show、git diff,当它们被解析为commit或tree时。在git log v1.0中,v1.0是commit-ish。作为一个commit-ish,v1.0和v1.0^{}引用相同的提交。因此,我们从git log v1.0和git log v1.0^{}获得相同的输出。对于像git rev-parse这样的其他git命令,它们是不同的。在git rev-parse -t v1.0中,v1.0是一个标记对象。在git rev-parse -t v1.0^{}中,v1.0^{}是一个提交对象。
https://stackoverflow.com/questions/46536306
复制相似问题