如何找到特定提交的分支?
Posted
技术标签:
【中文标题】如何找到特定提交的分支?【英文标题】:How do I find what branch a particular commit was made to? 【发布时间】:2022-01-13 14:02:55 【问题描述】:我们有一个包含许多开发人员的相当大的 git 存储库,我被要求调查一个特定的更改是如何进入我们的主分支的。因为分支只是对提交的引用,并且这些引用会随着时间的推移而移动,所以我不知道如何确定开发人员在进行特定提交时所在的分支。鉴于提交不“属于”任何特定的分支,如何做到这一点?有没有可能?
【问题讨论】:
这最终将取决于您的工作流程,正如您已经提到的,git 本身不存储任何分支元数据。一些工作流程包括使用本地挂钩来自动添加分支名称以提交消息。可能是获取您信息的一种方式,但这不是追溯性的,您将无法及时阅读。 你怀疑这个分支还存在吗?而且,你为什么想知道这个 - 分支名称对你有帮助吗?旁注,如果您使用 PR,您的 SCM 工具可能能够查看过去完成的 PR 的历史,以找到引入它的 PR,并且通常会告诉您当时的分支名称。 你为什么在乎?假设我在我命名为frink
的分支上进行了提交,然后我将其重命名为monty
。这个提交和我后来直接在分支名称flanders
上进行的提交有什么区别,然后我将其重命名为frink
,这是你看到的那个?
我很在意,因为我需要知道开发人员在进行特定提交时在哪个分支上工作。有很多分支和合并正在进行,有时我们需要确定特定更改如何在主分支中结束。我们可以调查并找出是什么提交引入了更改,但不知道当时它在哪个分支上。这会将整个分支历史变成一个无用的提交图,无法进行有意义的分析。这似乎应该是任何源代码控制系统的基础。
这能回答你的问题吗? Finding what branch a Git commit came from
【参考方案1】:
您可以通过git branch --contains <commit>
列出包含特定提交的所有分支。如果它是一个较旧的提交,这可能并不总是有用的,因为任何与最初进行提交的分支不同的分支也将包含它。以下是该命令的使用示例:
您还可以做的另一件事是列出自该提交以来所做的所有合并提交:
您可能可以通过比较此提交所在的分支以及自此提交后合并到 main 中的分支来了解提交的来源
【讨论】:
这很有帮助,但仍然没有向我显示完整的分支历史记录。我需要回答诸如“git log --until 10/9/2021
,它将列出从 10 月 9 日开始的提交以上是关于如何找到特定提交的分支?的主要内容,如果未能解决你的问题,请参考以下文章