如何查看分支机构信息?

时间:2019-02-17 05:35:14

标签: git terminal command-line-interface branch

我有多个分支机构。分支 A,B,C ..... J 。我只想知道这些分支是如何产生的?
例如我想知道哪个 C分支起源于终端

2 个答案:

答案 0 :(得分:2)

分支在git中没有“父”分支。或等效地,git不会跟踪“创建自”另一个分支的分支。 (实际上,根本不需要从另一个分支“创建”一个分支。)

关联分支的唯一方法是:它们共享多少历史记录。您有时可以推断出对回购分支机构的结构化理解,但是通常这需要对团队意图有一定的了解。例如,如果您知道一个团队使用gitflow分支策略,则可以推断feature个分支通常被视为具有单个development分支作为其父级,并且它具有{{1 }}作为其父项。但这就是人们对分支机构的看法。 git不知道也不在乎。

您可以使用mastergit 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,本身解析为特定提交。因此,masternew_branch在这种情况下没有任何特殊或有意义的关系。