是否可以直接确定Git的@ {-N}分支,而无需例如解析日志还是静默运行结帐?

时间:2019-04-12 22:59:13

标签: git

我想要一种在Git中确定分支@{-N}所引用的方法的方式,我可以在脚本中使用它。

它似乎没有在任何地方浮出水面。我可以想到几种自己构建功能的方法,例如解析.git/logs/HEAD,在post-checkout处写入自定义日志文件(这都是可行的解决方案,但它们感觉很费力),或者静默运行{{ 1}},然后以静默方式运行checkout @{-N}(速度慢,不一定能与肮脏的工作树配合使用,并且会更改结帐堆栈)。

但是有什么办法可以直接获得它吗?例如,有没有一种方法可以使用Git本身正在使用的功能,而无需复制Git的大部分源代码?我相信该语法是在https://github.com/git/git/commit/8415d5c7ef63237f6efab0c9aef0b0fdbcbfda25checkout -)和https://github.com/git/git/commit/c9717ee97075bb333684fa2f63e9136c5f7d89bfgit branch)中首次引入的,它们是用我不熟悉的内部函数来计算的。

我也会对指向Git源中与此相关的其他提交的评论感兴趣。

1 个答案:

答案 0 :(得分:3)

使用git rev-parse

$ git rev-parse --symbolic-full-name @{-1}
refs/tags/v2.1.0
$ git rev-parse --symbolic-full-name @{-2}
refs/heads/master

请注意,如果其中之一没有符号全名,则此特定形式将不输出

$ git rev-parse --symbolic-full-name @{-3}
$ git rev-parse @{-3}
6c4ab27f2378ce67940b4496365043119d7ffff2

发生这种情况是因为@{-3}根本不是分支,而是原始提交哈希。