我有多个分支机构。分支 A,B,C ..... J 。我只想知道这些分支是如何产生的?
例如我想知道哪个 C分支起源于终端?
答案 0 :(得分:2)
分支在git中没有“父”分支。或等效地,git不会跟踪“创建自”另一个分支的分支。 (实际上,根本不需要从另一个分支“创建”一个分支。)
关联分支的唯一方法是:它们共享多少历史记录。您有时可以推断出对回购分支机构的结构化理解,但是通常这需要对团队意图有一定的了解。例如,如果您知道一个团队使用gitflow分支策略,则可以推断feature
个分支通常被视为具有单个development
分支作为其父级,并且它具有{{1 }}作为其父项。但这就是人们对分支机构的看法。 git不知道也不在乎。
您可以使用master
或git log --graph
之类的UI工具来可视化分支(为此我经常使用gitk
)。但是请注意,在这些工具中,“分支”绘制到一侧基本上是任意的。如果您看到类似
gitk --all
您可能会推断A -- B -- C <--(branch1)
\
D -- E <--(branch2)
是根据branch2
创建的;但就git而言,假设branch1
是从branch1
创建的,这是合理的;我们真正知道的是,他们共享一个历史(来自branch2
)。
(如果分支已经合并在一起,则合并会提供有关哪个分支可能是父分支的提示;但是由于某些策略涉及从“父”分支合并到寿命长的“子”,这仍然不是确定的。分支以及从“子”分支到“父”分支的最终合并。)
所以...对于您要提出的问题,根本没有答案。您可能需要回过头来通过了解这一点来尝试实现的目标,并想出另一种方法来实现这一目标。
答案 1 :(得分:1)
(在注释中澄清后的替代问题表达方式)
如何知道哪个分支是该分支的“父级”,是从 创建的那个分支?
这样说,这个问题充满了对git中分支的误解。可以创建一个分支来指向任何提交,无论该提交实际上是否可以从任何分支到达。当您执行以下操作时:
git checkout master
git checkout -b new_branch
...您将创建一个新分支,其中未明确给出<refspec>
,因此假定为HEAD
,解析为master
,本身解析为特定提交。因此,master
和new_branch
在这种情况下不没有任何特殊或有意义的关系。