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

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

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

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


当前回答

看看BranchMaster。

我写它是为了可视化一个复杂的分支结构,通过将它们之间的所有提交压缩到一行。数字表示提交次数。

其他回答

使用git log——graph或gitk。(两者都接受——all,这将显示所有分支,而不仅仅是当前的分支。)

对于分支名称和紧凑视图,尝试:

git log --graph --decorate --oneline

如果你使用的是OS X系统,Gitx也是一个很棒的可视化工具。

我正在使用Visual Studio代码编辑器,我发现自己对mhutchie所做的Git Graph扩展非常满意。(我不是一个人,有100万用户的扩展!)

如果你碰巧喜欢这个编辑器,那么就去扩展选项卡(左边中间的格子),输入“Git Graph”并安装

要使用它,请转到Git控件选项卡并按查看Git图形按钮

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

我有3个别名(为了方便使用,还有4个别名-别名),通常都放在~/中。gitconfig文件:

[alias]
    lg = lg1
    lg1 = lg1-specific --all
    lg2 = lg2-specific --all
    lg3 = lg3-specific --all

    lg1-specific = log --graph --abbrev-commit --decorate --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(auto)%d%C(reset)'
    lg2-specific = 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(auto)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'
    lg3-specific = 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 cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)%n''          %C(white)%s%C(reset)%n''          %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)'

gitlg / gitlg1是这样的:

Git lg2是这样的:

git lg3是这样的:

值得注意的是,这并不意味着这是一个最终的解决方案——它只是一个模板,供您根据自己的喜好进行更改、添加和修复。如果你想使用这些,我的建议是:

将它们添加到你的.gitconfig中, 根据您的喜好定制(不同的颜色选择,2线和3线版本的不同线条安排,等等), 然后将副本保存到Gist或其他代码片段工具中,以便将来可以复制并粘贴到.gitconfigs中(当然,也可以选择版本控制您的dotfiles)。

注意:答案复制并改进了stackoverflow.com/questions/1057564/pretty-git-branch-graphs上的答案,因为在这里比在那里更合适。由于历史原因,把副本留在了另一个问题上——它现在已经关闭了,答案被一堆其他答案引用了。