Git版本分支图用于展示版本库中提交(commit)的历史记录和分支结构的图形化表示方式。 它以图表形式展示了每个提交的节点,以及它们之间的关系和分支的演变。
mermaid的gitGraph支持git的以下操作
- commit
- branch
- checkout
- merge
基本语法
默认分支从左到到右展示,默认分支为main
mermaid
1 2 3 4 5 6 7 8 9 10 11 12 13 |
commit
每个commit可以默认格式是序号-自动生成的hash串
,可以自定义commit id,commit不同类型形状展示不同, commit上可以打tag。
分支类型 | 作用 |
---|---|
NORMAL | 默认的commit类型,表示为圆形 |
REVERSE | 回滚commit,带×的圆形 |
HIGHLIGHT | 高亮commit,用于凸显特定commit |
mermaid
1 2 3 4 5 6 7 8 |
branch、checkout
branch用于创建分支,checkout用于切换分支,cherry-pick
功能有能体现,可以通过order属性控制分支顺序
使用cherry-pick的前提
- 需要提供commit id,若commit id不存在则出错
- 提供的commit id必须不能出现在当前分支
- 在cherry-pick前当前分支至少有一个commit,否则出错
mermaid
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
merge
分支合并,指定要merge的分支名称,merge的分支不能是当前分支
mermaid
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
分支方向
分支默认为从左到右(LR),可以为从顶至底(TB)方向,添加方向后注意后面的冒号不能省略,这里以上面merge示例为例。
mermaid
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
自定义配置
自定义配置主要通过在gitGraph关键字前加初始化配置的json,格式如下:
javascript
{
// 不能有单引号 其他属性必须有单引号 感觉这个好扯淡
init: {
// 日志
'logLevel': "debug",
// 主题 可选值base、forest、dark、default、neutral
'theme': 'default',
// 主题变量
'themeVariables': {
// 自定义分支颜色 最多设置8条
'git0': '#ff0000',
'git1': '#00ff00',
'git2': '#0000ff',
'git3': '#ff00ff',
'git4': '#00ffff',
'git5': '#ffff00',
'git6': '#ff00ff',
'git7': '#00ffff',
// 分支名称颜色 按照分支顺序
'gitBranchLabel0': '#ffffff',
'gitBranchLabel1': '#ffffff',
'gitBranchLabel2': '#ffffff',
'gitBranchLabel3': '#ffffff',
'gitBranchLabel4': '#ffffff',
'gitBranchLabel5': '#ffffff',
'gitBranchLabel6': '#ffffff',
'gitBranchLabel7': '#ffffff',
'gitBranchLabel8': '#ffffff',
'gitBranchLabel9': '#ffffff',
// 高亮commit颜色
'gitInv0': '#ff0000',
'gitInv1': '#ff0000',
'gitInv2': '#ff0000',
'gitInv3': '#ff0000',
'gitInv4': '#ff0000',
'gitInv5': '#ff0000',
'gitInv6': '#ff0000',
'gitInv7': '#ff0000',
// commit label颜色
'commitLabelColor': '#ff0000',
// commit背景色
'commitLabelBackground': '#00ff00',
// commit字体大小
'commitLabelFontSize': '16px',
// tag label颜色
'tagLabelColor': '#ff0000',
// tag背景色
'tagLabelBackground': '#00ff00',
// tag 边框颜色
'tagLabelBorder': '#0000ff',
// tag字体大小
'tagLabelFontSize': '16px'
},
// 图相关配置
'gitGraph': {
// 是否展示分支名称
'showBranches': true,
// 是否展示commit label
'showCommitLabel': true,
// commit label展示方向 默认是垂直方向 改为false是水平
'rotateCommitLabel': true,
// main分支名称 默认是main
'mainBranchName': 'main'
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
完整示例
mermaid
%%{
init: {
'theme': 'base',
'themeVariables': {
'git0': 'orange',
'git1': 'blue',
'git2': 'purple',
'gitBranchLabel0': 'white',
'gitBranchLabel1': 'red',
'gitBranchLabel2': 'black',
'gitInv0': 'pink',
'commitLabelColor': 'black',
'commitLabelBackground': '#gray',
'commitLabelFontSize': '10px',
'tagLabelColor': 'white',
'tagLabelBackground': '#00ff00',
'tagLabelBorder': '#0000ff',
'tagLabelFontSize': '16px'
},
'gitGraph': {
'rotateCommitLabel': false,
'mainBranchName': 'master'
}
}
}%%
gitGraph TB:
commit
commit type: HIGHLIGHT
branch dev
checkout dev
commit tag: "v1"
commit
branch feature
checkout feature
commit
commit
checkout master
commit
merge feature
commit tag: "v2"
commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41