2

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

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

4

1 回答 1

5

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

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

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

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

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

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

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

于 2019-06-27T21:55:35.147 回答