无法在终端中显示Git树


439

Killswitchcollective.com的旧文章(2009年6月30日)具有以下输入和输出

git co master
git merge [your_branch]
git push

upstream    A-B-C-D-E            A-B-C-D-E-F-G
                 \        ---->               \
your branch       C-D-E                        G

我很感兴趣如何在不使用OS / X中的Gitk或Gitx的情况下在终端中获得树状视图的提交。

您如何在终端中获得树状的提交视图?


2
这对问题并不重要,但是有关文章不再可用。可通过Internet存档获取缓存的副本:web.archive.org/web/20110831142839/http
Alan De Smet

Answers:


794

您如何在终端中获得树状的提交视图?

git log --graph --oneline --all

是一个好的开始。

您可能会收到一些奇怪的信件。它们是颜色和结构的ASCII码。要解决此问题,请将以下内容添加到您的.bashrc

export LESS="-R"

这样您就不需要使用Tig的ASCII过滤器了

git log --graph --pretty=oneline --abbrev-commit | tig   // Masi needed this 

来自Git-ready的文章基于文本的图形包含其他选项:

git log --graph --pretty=oneline --abbrev-commit

git日志图

关于您提到的文章,我会赞同Pod的回答:即席手工制作的输出。


的JakubNarębski提到在评论 TIG,一个基于ncurses的文本模式界面饭桶。查看他们的发行
它在2007年增加了一个--graph选项


1
我刚刚在我的仓库中测试了它。它可以工作,但是我在Windows上使用MSysGit1.6.3。
VonC

files.getdropbox.com在这里被禁止工作:(我会在大约一个小时的时间内看到您的照片,回家的时间是
VonC

@Vonc:我现在为第一个命令键入两个。对于第二个命令,我得到与图片类似的视图。
莱奥波德·赫兹(LéoLéopoldHertz),2009年

9
还有git的“ tig”文本模式界面(使用ncurses),该界面在git-log的“ --graph”选项之前已在终端中显示图形历史记录视图。
JakubNarębski09年

2
我发现--decorate在这种显示器上也是必不可少的-它在缩写提交名的旁边显示了引用名(分支,远程和本地)。
Matt Enright 2012年

311

一种解决方案是在您的帐户中创建一个别名.gitconfig并轻松调用它:

[alias]
    tree = log --graph --decorate --pretty=oneline --abbrev-commit

下次调用时,您将使用:

git tree

要将其放入〜/ .gitconfig而不需要对其进行编辑,可以执行以下操作:

git config --global alias.tree "log --graph --decorate --pretty=oneline --abbrev-commit"  

(如果不使用--global,则会将其放在当前存储库的.git / config中。)


1
这不是默认别名吗?我猜想它会使Git的CLI的使用起来更轻松一些,而我们不能拥有……
Timmmm

123
git log --oneline --decorate --all --graph

包含分支名称的可视树。

使用它添加它作为别名

git config --global alias.tree "log --oneline --decorate --all --graph"

你叫它

git tree

吉特树


2
非常好,这一个。我将其与此处less -S所述结合使用,以防止包裹的线混淆树。
djvg


4

保持简短的命令将使其更容易记住:

git log --graph --oneline

1

我建议任何人写下完整的命令

git log --all --decorate --oneline --graph

而不是创建别名。

最好将命令放到脑海中,这样您就可以内心知道它,即在更换机器时不依赖别名。


2
它实际上是git log --all --decorate --oneline --graph在助记符之后git log a dog;)
VonC

@VonC最终结果是相同的。无论如何,我同意你的看法。感谢您的反馈。
萨克斯风演奏家

是的,这就是;)我上一条评论结尾处的笑脸试图(不完美地)传达的意思:您可以按任意顺序使用这些选项。我只是觉得“记录一条狗”很有趣:)
VonC

1
或者,您也可以scp ~/.bashrc root@remote:~/将别名快速移动。
Adminy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.