【问题标题】:Determine branch name from git commit从 git commit 确定分支名称
【发布时间】:2019-11-09 22:27:57
【问题描述】:

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

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

【问题讨论】:

  • 一个提交可以是许多分支的一部分。

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


【解决方案1】:

我假设一个 git 提交哈希 (5743a31610d38064af35573b91e3bbe39d808b9b) 将始终映射到 0 或 1 个 git 分支?

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

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

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

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

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

这里通常的方法是创建一个标签名称来标识提交给特定用户的特定提交。由于一个标签命名一个对象(通常是一个提交),并且您可以完全控制标签的拼写,这往往会特别有效。

【讨论】:

  • 所以为发布创建一个标签,这是有道理的,因为大多数分支要么意义不大,要么被删除
  • 另外:是否有可靠的方法来跟踪创建 git 提交时的分支名称? 啊,没有。除非您将签出的分支名称作为修订评论的一部分包含在内(并且假设您始终在分支上工作......这也不正确)。
猜你喜欢
  • 2019-11-20
  • 2014-02-10
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2023-04-09
  • 2014-02-07
相关资源
最近更新 更多