Git:一个提交是从哪个分支起源的

4

从我所看到的情况来看,前景似乎相当暗淡,但以防万一,以下是我的要求:

  1. 确定给定提交是从哪个分支衍生出来的。
  2. 确定哪些提交是从给定分支衍生出来的。

从我所读到的内容来看,这两种情况似乎都很难实现,特别是在相关分支已经合并到主干后更加困难。


2
根据分支合并的方式,这可能是可行的。如果存在合并提交(即使用 --no-ff 进行合并),则至少有一个合并提交可供参考。 - Andrew Marshall
1
可能是重复的问题:Git:查找提交来自哪个分支 - Cascabel
请注意,当你问这个问题时,很多时候你实际上是在尝试完成其他事情,而不一定需要以这种方式来做。Git分支应该是轻量级的,经常是短暂的。例如考虑 git log --merges --ancestry-path <commit>..master。你可能关心合并提交(以及可能是谁进行了合并),而不一定是它被合并时所在的分支名称。 - Cascabel
@Jefromi:我实际上正在尝试完成两件事,它们都与需要确定提交和它们起源的分支之间的关系有关:1)出于审计目的,似乎不可能确定(一旦合并到主分支),开发人员在分支中进行了提交,然后由团队领导稍后合并到主分支。2)在我们的问题跟踪器中,为票证提供一个分支名称并能够查看该票证下哪些提交是在该分支下完成的将是很好的。 - Brent
1个回答

0
你可能想尝试这个脚本:https://github.com/SethRobertson/git-what-branch
EXAMPLES
     # git-what-branch --all 1f9c381fa3e0b9b9042e310c69df87eaf9b46ea4
     v2.6.12-rc3-450-g1f9c381 used the following minimal temporal path:
       merged to v2.6.12-rc3-461-g84e48b6 @Tue May  3 18:27:24 2005
       merged to v2.6.12-rc3-590-gbfd4bda @Thu May  5 08:59:37 2005
       v2.6.12-rc3-590-gbfd4bda is on v2.6.12-n
       v2.6.12-rc3-590-gbfd4bda is on v2.6.12-rc4-n
       [...]
       v2.6.12-rc3-590-gbfd4bda is on v2.6.36-rc4-n
       v2.6.12-rc3-590-gbfd4bda is on v2.6.36-rc5-n(aka master)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接