是否有一个Git命令来显示分支创建的分支?

时间:2014-05-08 17:13:17

标签: git git-branch

假设您在master,并且git checkout -B bugfix/user-profiles-nonexistent。有没有办法现在发现你从master分支出来,或者Git没有追踪到它?

2 个答案:

答案 0 :(得分:6)

作为示例,请考虑此提交/分支图:

A--B--C--D-------------E--P
       \                \
        \   G--H--I---M--N--O
         \ /         /
          F         /
           \       /
            J--K--L

分支O创建的分支是什么?其中一个包含F的分支是在A-B-C分支之外创建的,但它是包含G还是包含J的分支?也许F仍然是一个独特的分支,GJ都是F创建的分支。此外,包含GJ的两个分支稍后在M再次合并在一起。还有其他一些模棱两可的“这个分支来自哪里”的情况。请记住,A-B-C-D-E-P行的平坦度并不重要 - 图表可以使用相同的拓扑重绘,但以A-B-C-F-J-K-L-M-N-O为直线;这将导致一组不同的“问题来自哪里”。

一般来说,你提出的问题是不负责任的,除了基于命名策略的约定,或者在提交消息中包含其他信息,或者某些东西......有些人可能会争辩说,对这个问题的任何答案都不是真的有用或有趣(我不确定我个人会走得那么远,不过我自己)......

答案 1 :(得分:4)

从技术上讲,分支不是从另一个分支创建的,它是从提交创建的,因此我不确定是否记录了您想要的信息。它似乎不在reflog中。

如果分支有上游集,您可以使用以下方法获取它:

git rev-parse --symbolic-full-name @{u}

但上游并不总是分支的上游,因为上游分支可以在创建分支时设置(--track,也可以在branch.autosetupmerge为真时自动设置)或者您可以稍后设置/更改它(使用--set-upstream-to)。