【问题标题】:How to see branch information?如何查看分行信息?
【发布时间】:2019-02-17 05:35:13
【问题描述】:

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

【问题讨论】:

标签: git terminal command-line-interface branch


【解决方案1】:

分支在 git 中没有“父”分支。或者等效地,git 不会跟踪另一个分支是“从哪个分支创建的”。 (事实上​​,一个分支根本不必“从”另一个分支“创建”。)

分支关联的唯一方式是:它们共享多少历史。您有时可以推断出对 repo 分支的更结构化的理解,但通常这需要了解团队的意图。例如,如果您知道一个团队使用 gitflow 分支策略,那么您可以推断 feature 分支通常被认为有一个 development 分支作为其父分支,并且它具有 master 作为其父分支。但这就是人们对分支机构的看法; git 不知道也不在乎。

您可以使用git log --graphgitk 等UI 工具获得分支的可视化效果(为此我经常使用gitk --all)。但请注意,在这些工具中,将哪个分支“拉到一边”基本上是任意的。如果你看到像

这样的图表
A -- B -- C <--(branch1)
      \
       D -- E <--(branch2)

你可能会推断出branch2 是从branch1 创建的;但就 git 而言,假设branch1 是从branch2 创建的同样合理;我们真正知道的是他们有共同的历史(来自B)。

(如果分支已合并在一起,则合并提供了一些关于哪个分支可能是父分支的提示;但这仍然不是确定的,因为某些策略涉及从“父”分支合并到长期存在的“子”分支分支以及从“子”分支返回到“父”的最终合并。)

所以...对于您提出的问题,没有答案。知道这一点后,您可能需要回到您想要完成的工作,并想出另一种方法来完成它。

【讨论】:

    【解决方案2】:

    (在 cmets 中澄清后问题的替代表述)

    如何知道哪个分支是分支的“父”,它是从哪个分支创建的?

    这样说,这个问题充满了对 git 分支的误解。可以创建一个分支以指向任何提交,无论该提交实际上是否可以从任何分支访问。当您执行以下操作时:

    git checkout master
    git checkout -b new_branch
    

    ...您创建一个新分支,其中未明确给出&lt;refspec&gt;,因此假定为HEAD,解析为master,本身解析为特定提交。所以masternew_branch 在这种情况下没有有任何特殊或有意义的关系。

    【讨论】:

    • 你说的对。我想知道> 如何知道哪个分支是分支的“父”,它是从哪个分支创建的?
    • @RajeshK.Chaudhary 好的,谢谢澄清,所以正如我最后所说,没有真正的答案,git 不会将此信息存储为分支的元数据,根本没有分支元数据。但也许你需要这些信息 X 来解决问题 Y...?
    猜你喜欢
    • 2014-10-19
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多