从git commit确定分支名称

时间:2019-06-27 21:48:52

标签: git git-commit git-log git-hash

我假设git commit哈希(5743a31610d38064af35573b91e3bbe39d808b9b)将始终映射到0或1个git分支?有没有可靠的方法来跟踪创建git commit时分支名称是什么?据我所知,git分支是指向提交的指针,给定一个提交,我们是否可以可靠地指向一个分支(如果该分支仍然存在)?

上下文:我正在创建一些devops部署更改日志,以便我们可以跟踪更改的内容-我想知道是否值得命名已发布的git分支,或者只是将git commit哈希放入其中,并且如果真的愿意,我们可以反向查找分支名称吗?

1 个答案:

答案 0 :(得分:4)

  

我假设git commit哈希(5743a31610d38064af35573b91e3bbe39d808b9b)始终会映射到0或1个git分支?

这是一个错误的假设。在典型的存储库中,每个分支上都有一个提交-根提交。

相反,方向​​相反:从名称(分支或标签名称,或者实际上是标识提交的任何引用)中,您可以找到以该名称命名的(单个)提交。为此,请使用git rev-parse name^{commit}

提交哈希唯一地标识了一个特定的提交,并且您可以通过从给定的分支或标签标识的一个提交中走图来找到允许到达该提交的所有分支或标签名称:

git branch --contains <hash>
git tag --contains <hash>
  

上下文:我正在创建一些devops部署更改日志,以便我们可以跟踪更改的内容-我想知道是否值得命名已发布的git分支,或者只是将git commit哈希放入其中,并且如果真的愿意,我们可以反向查找分支名称吗?

这里常用的方法是创建一个标记名称,以标识传递给特定用户的特定提交。由于标签仅命名一个对象(通常是一次提交),并且您可以完全控制标签的拼写,因此这种方法的效果特别好。