我想要一种在Git中确定分支@{-N}
所引用的方法的方式,我可以在脚本中使用它。
它似乎没有在任何地方浮出水面。我可以想到几种自己构建功能的方法,例如解析.git/logs/HEAD
,在post-checkout
处写入自定义日志文件(这都是可行的解决方案,但它们感觉很费力),或者静默运行{{ 1}},然后以静默方式运行checkout @{-N}
(速度慢,不一定能与肮脏的工作树配合使用,并且会更改结帐堆栈)。
但是有什么办法可以直接获得它吗?例如,有没有一种方法可以使用Git本身正在使用的功能,而无需复制Git的大部分源代码?我相信该语法是在https://github.com/git/git/commit/8415d5c7ef63237f6efab0c9aef0b0fdbcbfda25(checkout -
)和https://github.com/git/git/commit/c9717ee97075bb333684fa2f63e9136c5f7d89bf(git branch
)中首次引入的,它们是用我不熟悉的内部函数来计算的。
我也会对指向Git源中与此相关的其他提交的评论感兴趣。
答案 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}
根本不是分支,而是原始提交哈希。