我在自己的机器上单独使用Git,我发现很难维护所有分支和提交的心理模型。我知道我可以通过git日志查看提交历史,但是有没有一种方法可以查看整个分支地形,就像这些ASCII映射一样,似乎到处都在用它来解释分支?

      .-A---M---N---O---P
     /     /   /   /   /
    I     B   C   D   E
     \   /   /   /   /
      `-------------'

感觉就像有人来找我的存储库时,很难弄清楚到底发生了什么。

我猜我是受到了AccuRev的流媒体浏览器的影响…


当前回答

我找到了这篇博客文章,它给出了一个简洁的方法:

git log --oneline --abbrev-commit --all --graph --decorate --color

我通常为上面的命令创建一个别名:

alias gl='git log --oneline --abbrev-commit --all --graph --decorate --color'

只需使用gl。

您还可以将别名添加到Git配置中。打开文件~/。并在[alias]部分中添加以下行:

[alias]
        lg = log --oneline --abbrev-commit --all --graph --decorate --color

像这样使用它:

git lg

样例输出:

其他回答

TortoiseGit有一个叫做“修订图”的工具。如果你在Windows上,它很容易右键单击你的仓库→Tortoise Git→修订图。

我99.999%的时间用gitlg来查看历史,0.001%用gitlog来查看历史。

我只是想分享两个可能有用的日志别名(从.gitconfig配置):

[Alias]
     lg = log --graph --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short
     hist = log --graph --full-history --all --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short

Git lg将看到当前的分支历史记录。 Git hist将看到整个分支历史。

我想分享我的git日志命令的压缩预设: (绿色是我的默认控制台颜色)

它被设计成尽可能紧凑和像表格一样(没有增加任何多余的空间),同时仍然有信息和易于阅读。这基本上是Git默认使用的中型格式的压缩版本。

特点:

固定物品位置; 提交哈希和引用名称的默认颜色; 提交作者日期为本地时区; 提交消息被包装成128个字符并缩进; 扩展提交消息也会显示(如果有的话),并删除任何尾随换行符。


您可以使用以下命令将其添加到配置文件中: (注意他们会改变所有git日志格式的日期格式!)

$ git config --global log.date 'format-local:%d %b %Y %H:%M'
$ git config --global pretty.compact '%C(auto)%h %C(cyan)%<(17,trunc)%an%C(auto) %D%n        %C(cyan)%ad%C(auto) %w(128,0,26)%s%w(0,0,26)%+b%-(trailers:key=FAKE)'

... 然后像这样使用它(使用——graph,——all或任何其他选项):

$ git log --graph --pretty=compact

如果你也想让它默认,你可以用这个命令:

$ git config --global format.pretty compact

或者如果你喜欢别名:

$ git config --global alias.logc "log --date=format-local:'%d %b %Y %H:%M' --pretty='%C(auto)%h %C(cyan)%<(17,trunc)%an%C(auto) %D%n        %C(cyan)%ad%C(auto) %w(128,0,26)%s%w(0,0,26)%+b%-(trailers:key=FAKE)'"

如果您想做任何更改,请参阅git日志参考的PRETTY FORMATS部分。

我在~/中有这个git日志别名。查看图表历史记录:

[alias]
l = log --all --graph --pretty=format:'%C(auto)%h%C(auto)%d %s %C(dim white)(%aN, %ar)'

别名设置好后,git l将显示如下内容:

在Git 2.12+中,您甚至可以使用日志自定义图形的线条颜色。graphColors配置选项。

至于日志的格式,它类似于——oneline,只是增加了作者名称(关于.mailmap)和相对作者日期。注意%C(auto)语法,它告诉Git使用默认的颜色来提交哈希,等等,在Git >= 1.8.3中是支持的。

还有Tig。它不像“BranchMaster”那样折叠树枝,但是……

它是快速的,在终端运行。

因为它是如此之快(+键盘控制),你得到一个伟大的用户体验。它几乎就像我的“ls”,用于包含Git存储库的目录。

它有常用的快捷方式,/搜索等。

(PS:这是屏幕截图背景中的终端。现在看起来好多了,但是我的电脑拒绝截屏,对不起)

(PPS:我也使用GitKraken,它有非常清晰的可视化,但它比Tig重得多)