gitk展示“未来”分支?

时间:2010-12-14 12:40:22

标签: git branch gitk

如果我使用gitk查看一个提交对象,它会在Branches(左下方窗格)下列出这个分支的所有子项,我可以向上导航(只要它们不是无名提交但实际上有分支名称) )。

为什么呢?恕我直言这不符合逻辑,没有用,因为它违反了事件的年表(thinsg如何被提交到存储库中)。

假设我有一棵看起来像这样的树:

o分支'左'(提交3)
| o分支'右'(提交2)
| /
o提交1
|
o分支'基地'

现在,如果我选择提交1,那么在'分支:'下我会看到:
  分支:左,右
  遵循:基础

这有什么意义? commit 1对象是基本分支的一部分,它不是Left分支的一部分,也不是Right分支的一部分,因为在创建它时,Left和Right还不存在。因此,所有被合并或提交到Left和Right LATER的东西都将是Left或Right的一部分,而不是提交1.那么那么提交1的分支如何包括Left和Right?

有人请解释我在这里缺少的东西,因为来自ClearCase的背景对我来说根本没有意义......

谢谢!

3 个答案:

答案 0 :(得分:1)

感谢这些信息,您知道所选提交中引入的更改包含在所有分支中。

我可以想到我想知道提交适用于哪些分支的情况(或者更确切地说,如果给定分支包含所选提交)。你可以随时跟随gitk中的行,但是对于长分支来说这可能很麻烦。

有时候我想做相反的事情,选择一个提交,看看是否还有其他先前的提交。据我所知,没有切实可行的方法,所以选择其他先前的提交并检查“分支”字段是一个很好的替代品。

答案 1 :(得分:0)

Git有一个更匿名的分支模型(不要与匿名分支混淆,git没有这些),这样,提交不会永久地与分支相关联(有时分支名称会进入合并消息,但那是更多的会议)。 git中的一个分支是一个分支标签,它与新的提交一起向前移动,但是在提交中没有关于它在哪个分支上创建的信息。

在您的示例中,commit1与任何分支都没有直接关联,但前一个分支停留在base,两个升序提交位于LeftRight。< / p>

答案 2 :(得分:0)

你看这个有点不对劲。 commit1提交不是基本分支的一部分。在git中,branches是对提交对象的简单引用。然后,分支的历史记录被描述为“所有提交可以从'到”。因此,可以从Left和Right访问commit1,但是无法从base访问它。

如果您要git checkout base && git checkout -b feature2,那么您的新feature2分支将不包含commit1。 Git不跟踪分支创建 - 如果要记录您可以添加标记或使用git mergebase Left Right,它将告诉您可以从两个分支到达的第一个提交(在本例中为commit1)。