由" git"显示的git提交图" gitk"显示:这里发生了什么?

时间:2017-05-21 17:56:03

标签: git gitk

我目前正在查看SWI Prolog git存储库(克隆到我的本地计算机)。

为此,我使用

显示提交图
git log --graph --full-history --all --color \
--pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"

以及使用gitk

以下是git log输出的一部分:

git log output of SWI Prolog git commit graph

如果我正确解释了上述内容:

  1. 有一个以标签" V7.4.1"结尾的分支。 (提交df973c8周围的红色圆圈)。这个分支已经陈旧,因为没有进一步的工作。这是对的吗?
  2. 相同的分支早先从主分支馈送(在2f745e6之后的提交675a4049周围的蓝色圆圈)。我不知道那时的来回对角线。他们为什么"超越"?
  3. 如果我与gitk(下面的输出)的输出进行比较,则以标记" V7.4.1"结尾的分支在gitk中完全不可见。 2f745e6(" CLEANUP:允许gcc ......")根本没有任何分支(下图中的红色圆圈),只有主分支及其下一个提交,c6b9256,"更新了clib&显示#34;,有没有办法看到"陈旧"分支,也是?
  4. gitk log output of SWI Prolog git commit graph

1 个答案:

答案 0 :(得分:4)

Git中的提交是单向连接的;提交知道它的父母是什么,就是这样。当public function rules() { return [ 'name' => 'required|unique:collections,table_name' ]; } public function messages() { return [ 'name.required' => 'You need to choose a name for your collection', 'name.unique' => 'A collection or collection table with this name already exists', ]; } public function validate($data) { return Validator::make($data, $this->rules(), $this->messages()); } git log显示图表时,他们必须在特定点,分支或标记或提交时开始阅读图表。然后他们只能看到那个标签的祖先。默认情况下,gitkgitk都以这种方式工作,并从您当前的提交开始。

但您使用了git log。这将从每个分支头和标签开始,并显示可到达的所有内容。它会向你显示每个分支和每个标记及其所有祖先的提交。

相比之下,

git log --all将从当前提交向后工作。你只会看到当前提交的祖先。 gitk不是当前提交的祖先,所以它甚至都不知道它。

比较苹果与苹果:v7.4.1gitk --allgit log --allgitk

  

有一个以标记“V7.4.1”结尾的分支(提交df973c8周围的红色圆圈)。这个分支已经陈旧,因为没有进一步的工作。这是对的吗?

这不是分支,而是标签。分支和标签都只是指向提交的标签,但标签不应该移动。标签旨在标记单个提交,在本例中是v7.4.1的发布,因此它们将始终是“陈旧的”。不要删除它们,它们就在那里你可以找到重要的提交。

  

相同的分支早于主分支(在2f745e6之后的提交675a4049周围的蓝色圆圈)。我不明白那个时候来回的对角线。为什么他们“过度”?

Git中的分支是字面上的分支。你看到的是Git绘制那些分支。但它不能总是巧妙地适应屏幕,所以有时它们会交叉。这就像俯视高速公路立交桥。

675a​​4049是2f745e6和其他东西进一步合并的地方。