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

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

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

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


当前回答

我在~/中有这个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中是支持的。

其他回答

另一条git日志命令。这是一个固定宽度的列:

git log --graph --pretty=format:"%x09%h | %<(10,trunc)%cd |%<(25,trunc)%d | %s" --date=short

样例输出:

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

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

样例输出:

在Windows上,你可以使用一个非常有用的工具:Git Extensions。它是一个GUI工具,使Git操作非常简单。

而且它是开源的。

我喜欢,用git日志,做:

 git log --graph --oneline --branches

(还有——all,用于查看远程分支)

与最新Git版本的配合:自1.6.3以来引入(2009年5月7日星期四)

“——pretty=<style>”选项到命令日志族现在可以拼写为“——format=<style>”。 此外,——format=%formatstring是——pretty=tformat:%formatstring的简写。 "——oneline"是"——pretty=oneline -abbrev-commit"的同义词。

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix
| | * 8183707 a first bug10 fix
| |/
| * e727105 a second evol for 2.0
| * 473d44e a main evol
|/
* b68c1f5 first evol, for making 1.0

你也可以限制日志显示的跨度(提交的数量):

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all -5
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix

(只显示最后5次提交)


我不喜欢当前选择的解决方案是:

 git log --graph

它显示了太多的信息(当我只想看一个快速的摘要):

PS D:\git\tests\finalRepo> git log --graph
* commit 4919b681db93df82ead7ba6190eca6a49a9d82e7
| Author: VonC <vonc@laposte.net>
| Date:   Sat Nov 14 13:42:20 2009 +0100
|
|     a second bug10 fix
|
* commit 3469e13f8d0fadeac5fcb6f388aca69497fd08a9
| Author: VonC <vonc@laposte.net>
| Date:   Sat Nov 14 13:41:50 2009 +0100
|
|     a first bug10 fix
|

Gitk很棒,但迫使我离开shell会话到另一个窗口,而快速显示最后n次提交通常就足够了。

一个很好的基于web的工具是ungit。它可以运行在Node.js和Git支持的任何平台上。有一个视频是关于它是如何为那些发现这类事情比阅读更容易的人工作的……