在命令行显示分支层次结构?
我很好奇,如果有一种方法来在命令行上显示分支层次结构? 例如,如果我使用git branch
,而不是像这样看到输出:
* master joes_work refactoring experiment
你看到这样的输出:
* master joes_work refactoring experiment
这样很容易看出哪个分支是分支的。 即使没有输出树结构的特定命令,是否有输出哪个分支来自哪个分支的信息的命令? 我可以使用perl脚本来格式化输出。
sehe的解决scheme看起来不错,这里是另一个似乎包含类似信息,格式不同,它使用git日志,所以它也包含提交信息(忽略分支名称,我有点搞砸了!):
git log --all --graph --decorate --oneline --simplify-by-decoration * ae038ad (HEAD, branch2-1) add content to tmp1 | * f5a0029 (branch2-1-1) Add another |/ * 3e56666 (branch1) Second wave of commits | * 6c9af2a (branch1-2) add thing |/ * bfcf30a (master) commit 1
尝试
git show-branch git show-branch --all
示例输出:
bash$ git show-branch --all ! [branchA] commitA only in branchA * [branchB] commitB ! [branchC] commitC only in branchC --------------------- + [branchA] commitA only in branchA * [branchB] commitB + [branchC] commitC only in branchC *+ [branchC~1] commitB-1 also in branchC *+ [branchC~2] commitB-2 also in branchC +++ [branchC~3] common ancestor +++ [branchC~4] more common ancestors
从git的angular度来看,这不是分支机构的工作方式。 如果我做了一些提交分支a
,从它创build分支b
,在那里工作,然后做一个其他的工作:
A -- B -- D <-- a \ \ C <-- b
如果你反其道而行之,这是无法区分的:
A -- B -- C <-- b \ \ D <-- a
我能想到的从哪个分支发现某个分支的唯一途径是reflog,但那是不可靠的(通常删除超过90天的条目)。
如何为您的.gitconfig
这个别名:
[alias] branch-tree = !cd "$(git rev-parse --git-dir)/refs/heads" && tree
您也可以提供选项,具体取决于您的tree
命令支持的内容,例如用于时间戳的-D
。