在Git中,我们可以通过在命令行使用git log
命令的不同参数来打印一个漂亮的分支图。这里有几种方法:
基本分支图
最简单的分支图可以使用如下命令生成:
shgit log --graph --oneline --all
--graph
参数会显示ASCII图形表示的分支图。--oneline
参数将每个提交放在一行显示,这样的输出更为紧凑。--all
参数显示所有的分支,而不只是当前分支。
带有更多信息的分支图
如果你希望在分支图中显示更多信息,比如提交者的名字和提交的日期,可以使用:
shgit log --graph --oneline --all --decorate
--decorate
参数会添加指向分支名、标签等的指针。
定制化的分支图
你还可以使用--pretty=format:
来定制输出格式。例如:
shgit log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all
- 格式字符串可以定制颜色、提交哈希、分支名、提交信息、提交日期和作者等信息的显示方式。
%Cred
,%Creset
,%C(yellow)
, 等命令用于定制颜色。%h
显示缩略的提交哈希。%d
显示装饰器(分支名、标签)。%s
显示提交信息。%cr
显示相对时间(比如,“3 days ago”)。%an
显示作者名字。--abbrev-commit
缩短哈希长度。
使用别名
因为这些命令可能会变得很长,所以你可能想要在Git中为它们设置别名。例如,设置一个叫做graph
的别名:
shgit config --global alias.graph "log --graph --oneline --all --decorate"
这样,以后你就可以简单地使用git graph
来打印漂亮的分支图了。
示例
下面是一个直观的例子,展示了当你在具有几个分支的仓库中使用命令git log --graph --oneline --all --decorate
时,可能会得到的输出:
sh* e2a6f7b (HEAD -> master, origin/master, origin/HEAD) Merge pull request #2 from feature/xyz |\ | * 4e5c111 (feature/xyz) Added XYZ feature | * 5f4e3d2 Improved XYZ feature * | 9c0f3f9 Modified README |/ * c1f2e9e Initial commit
这是一个简单的树形结构,它将显示提交的顺序和分支之间的关系。每个*
和|
字符构成ASCII艺术,代表提交和分支。最左边的线表示当前分支的直接历史,而右边的线则代表其他分支的提交。