从 git commit 确定分支名称

Ale*_*lls 2 git git-log git-commit git-hash

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

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

tor*_*rek 5

我假设 git commit hash (5743a31610d38064af35573b91e3bbe39d808b9b) 将始终映射到 0 或 1 git 分支?

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

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

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

git branch --contains <hash>
git tag --contains <hash>
Run Code Online (Sandbox Code Playgroud)

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

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