git - 完美的Git分支图

  显示原文与译文双语对照的内容

我看到一些书籍和文章有一些非常漂亮的git分支和提交图。 是否有任何工具可以制作高质量的git历史图像?

时间:

注意:这个答案比它所获得的更多。 于一个publication–和根本没有更好的solution,它相关文原本是要发布,因为我觉得这些图很好看而且他们是可以被在 illustrator. drawn-over 但是现在有更多关于这个问题的答案 ! 请去 upvote !


[alias]
lg1 = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
lg =!"git lg1"

git lg/git lg1 如下所示: git lg1

git lg2 看起来像这样: git lg2

对于文本输出,你可以尝试:


git log --graph --abbrev-commit --decorate --date=relative --all

或者


git log --graph --oneline --decorate --date=relative --all

这里的是一个用于绘制DAG图形的graphviz别名。

我个人使用 gitxgitk --allgitnub

于侏儒( 它也可以在 KDE 等等 上工作) 它显示了一个相当相关有色 graph, Gitk和Gitg是个克隆体,

它正在积极开发( 从 2012开始) 。 它可以让你对提交( 图形节点) 要么按时间顺序进行排序或者 拓扑学而言,和隐藏提交,它不一定会使选定的分支。

对于大型存储库和复杂的依赖关系图,它工作良好。

样例截图,显示linux-git和 linux-2.6 存储库:

linux-git

linux-2.6

SourceTree是一个非常好的。 它打印出一个好看的和中等大小的历史和分支图: ( 以下是在一个实验性的Git项目上完成的,只是为了查看一些分支) 。 支持 Windows 7 + 和 Mac OS X 10.6 + 。

enter image description here

http://www.sourcetreeapp.com/

基于一个Graphviz脚本我中找到了一个答案一个相关问题向上,我进了一个 ruby 脚本,它创建了一个git存储库的摘要视图。 它elides所有线性历史和只是显示"有趣"提交,换句话说,那些有多台父母,多个孩子,或者中所指向的分支或者标记。 下面是它为 jquery 生成的图形 Fragment:

jquery sample

取决于他们看起来像什么。 我使用了 gitx,它制作了像这样的图片:

simple plot

你可以在 24 -way八达通合并( 最初来自 http://clojure-log.n01se.net/date/2008-12-24. html ) 上比较 git log --graph vs gitk:

24-way git octopus merge. Original URL was <code> http://lwn.net/images/ns/kernel/gitk-octopus.png </code>

git-forest 是一个优秀的perl脚本,我已经使用了一年多了,我几乎没有直接使用 git log 命令。

我喜欢这个脚本中的一些东西:

  • 它使用unicode字符绘制图形中的线条,从而对图形行进行更连续的查找。
  • 你可以将 --reverse 与图形输出结合使用,这对于常规的git log 命令是不可能的。
  • 它在内部使用 git log 来获取提交列表,所以你传递给 git log的所有选项也可以传递给这个脚本。

我使用 git-forest的别名如下:


[alias]
tree ="forest --pretty=format:"%C(red)%h %C(magenta)(%ar) %C(blue)%an %C(reset)%s" --style=15 --reverse"

这就是终端上的输出方式:

enter image description here

要获得更详细的文本输出,请尝试:


git log --graph --date-order -C -M --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=short

你可以在 $HOME/.gitconfig 中写入别名


[alias]
 graph = log --graph --date-order -C -M --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=short

gitg: 一个gtk-based存储库查看器,这个以前没有但很有趣且有用
http://git.gnome.org/browse/gitg
我现在使用它

Gitgraph.js web - 还没有提到- 它允许在没有存储库的情况下绘制漂亮的git分支。 只需编写一个Javascript代码来配置你的分支并提交并在浏览器中呈现。


var gitGraph = new GitGraph({
 template:"blackarrow",
 mode:"compact",
 orientation:"horizontal"
});

var master = gitGraph.branch("master").commit().commit();
var develop = gitGraph.branch("develop").commit();
master.commit();
develop.commit().commit();
develop.merge(master);

sample graph generated with Gitgraph.js

我一直在寻找的东西。

...