如何理解`git log --all --graph --oneline --decorate`命令的图形输出?

9
当运行git log --all --graph --oneline --decorate命令时,跟在提交名称后面的括号中的文本代表什么意思?
例如:

enter image description here

蓝色、绿色、红色和黄色分别用于着色字符串的含义是什么?还有其他可以使用但未在此处显示的颜色吗?
“->”是什么意思?
在“origin”和“B...”或“staging”之间的“/”代表什么意思?
在输出的第一行中,
- “HEAD -> B...”是否表示分支“B...”的HEAD指向提交? - “origin/B...”是什么意思?
在输出的第5行中,
- “tag: 1...”是否类似于第一行中的“HEAD -> B...”? - 绿色的“staging”是什么意思? - 为什么这一行有三个由逗号分隔的字符串,而第一行只有两个?
在输出的第6行中,
- 为什么只有一个字符串,少于第一行和第5行?

谢谢。


1
在这种情况下,绿色表示本地分支,红色表示远程分支,黄色表示标签。青色的HEAD仅告诉您当前检出的分支是哪个。 - twalberg
-> 表示什么?在 originB...staging 之间的 / 表示什么? - Tim
有关 -> 的含义和起源,请参见 https://dev59.com/6oLba4cB1Zd3GeqPhKGr - jub0bs
2个回答

8

这是一大堆问题 ^_^。

括号

括号中的文本表示标签、分支和HEAD指针(如果存在),以及你的工作目录是否在此处。每次运行 git checkout SOMETHING(其中something是标签、分支或提交哈希值)时,你都会更改HEAD指针(即你的工作目录)。

颜色

颜色取决于终端配置。我有以下颜色:

  • 紫色表示存储
  • 红色表示远程分支
  • 粗体白色表示本地分支和标签
  • 黄色表示提交信息

在你的图片中,我看到了以下颜色:

  • 红色表示远程分支
  • 红色表示本地分支
  • 粗体黄色表示标签
  • 黄色表示提交哈希值

->

只是一个指针。 HEAD -> 45g24g42t 表示你的HEAD(即你的工作目录)位于提交哈希值为45g24g42t的位置。

origin/bla

每次克隆项目时,你都可以看到这个:

* 3G245GV (HEAD -> 3G245GV, foo, origin/foo)

这意味着你本地的分支foo与远程的foo分支处于同一点。通常,远程分支被命名为origin。如果你进行了提交,在你的电脑上会看到类似这样的内容:
* G54G23F (HEAD -> G54G23F, foo)
* 3G245GV (origin/foo)

这意味着你的本地分支领先于 origin/foo 分支。这意味着你应该推送你的提交记录。

就是这些

有些问题是多余的,但如果需要,我会改进这个答案。


1
在git中,分支基本上是指向提交的指针。HEAD也是一个指针,它指向你所检出的当前分支。
因此,HEAD -> B03701 简单地意味着你当前在 B03701 分支上。-> 表示你的HEAD指针所指的位置。
在快照中,红色表示远程分支。这里的 origin/staging 意味着我们远程的暂存区正在指向 ee8f77d 提交。这里的 origin 只是指远程仓库。
而绿色表示本地分支,所以绿色的 staging 是你创建的本地分支,它也指向 ee8f77d,这意味着当你在 staging 分支上进行最后一次提交时,提交的是 ee8f77d。
因此,在括号内,逗号分隔的文本表示指针(分支是一个指针)指向的位置。因此,可能有多个指针指向特定的提交,也可能没有指针。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接