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
Run Code Online (Sandbox Code Playgroud)
我感兴趣的是如何在终端中获得提交树的视图,而不使用OS/X中的Gitk或Gitx.
你怎么能在终端获得树状的提交视图?
在制作我最喜欢的git日志视图时,我创建了这个别名:
graph = log --pretty=format:'%Cgreen%ad%Creset %C(yellow)%h%Creset%C(yellow)%d%Creset %s %C(cyan)[%an]%Creset %Cgreen(%ar)%Creset' --date=short --graph
这会创建一个输出,如:

我在这里缺少的是分支类型的不同颜色,如log --oneline --decorate --graph.

--decorate(默认情况下使用= short)为不同的识别分支提供不同的颜色.分支类型(HEAD, origin/master, origin/HEAD, master)为青色,红色,红色,绿色.然而我的没有色彩; 仅用整个分支部分的黄色着色.
有没有办法用不同的别名给不同种类的树枝赋予不同的颜色?
我执行的步骤:
我有两个分支branch1和branch2,
$git branch --Initial state
$branch1
$git checkout branch2
$git pull origin branch1 --Step1
Run Code Online (Sandbox Code Playgroud)
我解决了冲突并做了一个
$git commit -m "Merge resolved"
Run Code Online (Sandbox Code Playgroud)
然后
$git checkout branch1
$git merge branch2
$git push origin branch1
Run Code Online (Sandbox Code Playgroud)
现在我意识到,在第1步,自动合并删除了一些代码,并且更改代码被推送,现在我想回到我的初始状态,以便还原任何更改.寻找一些直接的帮助?
有没有办法只在Git中显示分支结构?有许多的,显示的图形提交工具,但对我来说名单很长,所以这是不可能看到的结构.我猜git-log可能是答案,但我找不到任何只显示分支提交的开关.这与"--graph --branches --oneline --all"一起可以解决问题.
编辑:我正在寻找一种方法在Ubuntu中做到这一点.
如果我有n个git分支,我如何轻松地显示这些分支之间的关系?
基本上我有兴趣看到我的存储库中所有分支的子集的树.然而,我对所有中间提交都不感兴趣.
例如:我的存储库看起来像这样:
o---o--o A
/ /
o--o--o--o--o--o B
\ \ \
\ o--o C \
\ \ \
o--o--o--o--o--o D
Run Code Online (Sandbox Code Playgroud)
但可能更复杂.现在我想看看分支A,C和D之间的关系.有些东西:
o A
/
o--o--o
\ \
o---o C
\
o--o D
Run Code Online (Sandbox Code Playgroud)
或者等效的概述.这有可能,怎么样?(图形工具就好了.)
解
根据Antoine Pelisses的答案,下面的行似乎(几乎)完全符合我的要求:
git log --graph --decorate --oneline --simplify-by-decoration A B C
Run Code Online (Sandbox Code Playgroud)
更新
Mark Longair在下面的答案中指出gitk接受相同的参数git rev-list,因此可以这样做:
gitk --simplify-by-decoration A C D
Run Code Online (Sandbox Code Playgroud) 如何让git在日志图中显示我当前的节点? git log --graph --all 使用*标记所有节点,但我习惯于Mercurial,其中hg glog通过用@描述它来直观地区分我当前的节点.这在git fetch(aka hg pull)之后特别有用,当我的当前节点不一定在顶部时.
目前我必须找出当前节点的哈希值,然后搜索图形日志的输出.有没有更好的办法?
PS - 我在非图形环境中,所以gitk不是一个选项.
[更新:现在我完全适应了git,我设置新环境的第一件事是发出以下命令来设置git别名:
git config --global alias.map 'log --graph --full-history --all --color --decorate'
Run Code Online (Sandbox Code Playgroud)
这允许我输入git map任何仓库并查看所有分支和提交的ascii-art地图,以及我在该地图上的位置.这个别名可能是我此时最常用的git命令(除了添加和提交),对我来说真的不可或缺]
Emacs有一个可选的撤销树.您可以将光标移动到每个节点,然后点击返回以及时返回,甚至沿着分支返回.
是否有类似git的东西,可以在终端(不是Emacs)中访问.所以,在一个git项目中,我可以输入一个命令,它会显示树.我可以游标,回到过去,甚至切换到另一个分支,然后点击返回,它将检查特定提交的整个状态.

我想简单地查看我的 git 存储库的分支拓扑,而不是同时可视化整个提交历史,这使得分支可视化难以阅读。
$ git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"
* 822458d (HEAD -> branch2) revision 5
* 1057127 revision 4
| * ae46e7e (branch1a) revision 3
| * 39cd7e2 (branch1) revision 2
| * 6802061 revision 1
|/
* f8c8522 (master) start
Run Code Online (Sandbox Code Playgroud)
虽然我想要的只是分支的拓扑结构,但没有提交历史记录,即像这样的东西
branch2
| branch1a
| /
| branch 1
|/
(master)
Run Code Online (Sandbox Code Playgroud)
你们知道如何在git中实现这一目标吗?
谢谢你。
git ×11
branch ×3
git-branch ×2
logging ×2
console ×1
git-config ×1
git-log ×1
git-revert ×1
graph ×1
terminal ×1
tree ×1