我要实现的是一个Git图形日志,其中每个分支都分配有一个单独的列。
$ git log --graph --all --topo-order --decorate --oneline --boundary \
--force-branch-columns=master,dev
* f745bf5 (HEAD, newbranch) Merge branch 'master' into newbranch
/|
/ * 7031537 commit
/ * 416ab2c commit
| * | a9f8d93 (dev) Merge branch 'master' into dev
|/| |
* | | 5f32650 (master) commit
| * | b511501 Merge branch 'master' into dev
|/| |
* | | 4e6810e commit
| * | 2cd55b4 Merge branch 'master' into dev
|/|/
| /
|/|
* | 4f74695 commit
| * 372799e Merge branch 'master' into dev
|/|
* | 076669f commit
\|
* 7382440 initial empty commit
在这里我找到了一些结果,但没有实现任何结果的方法: https://gist.github.com/michaelhood/5075495
$ git log --graph --all --topo-order --decorate --oneline --boundary \
--force-branch-columns=master,dev
答案 0 :(得分:3)
没有-但也值得注意的是,这样的功能会产生误导。
例如,提交4e6810e
在分支master
上的事实不会改变提交4e6810e
在分支newbranch
上的事实。许多提交同时在许多分支上。随着分支名称的创建和销毁,包含任意一个提交 C 的分支集会随着时间变化。
图始终保持不变。只是标签(分支名称)会发生变化。 1 语句 commit C位于分支B 上只是意味着从提交开始由名称 B 标识,并在通过提交图形成的历史记录的所有路径中向后工作,Git可以到达提交 C 。
Git确实具有在图形中向后工作的概念,但是每次合并时仅遵循 first 父级。也就是说,给定一个像这样的图:
...--o--o--o--o---o--o <-- name1
\ /
o--o--o--o <-- name2
一个人可以让Git从name1
所标识的尖端提交开始,并向后浏览两行提交,或者使Git从name1
所标识的尖端提交开始,并且仅沿第一行向后走(假设合并的第一个父对象位于第一行)。为此,两个基本的图形遍历命令git log
和git rev-list
具有选项--first-parent
。
1 例如,删除名称master
后,提交4e6810e
将不再位于master
上(不再存在)。
答案 1 :(得分:1)
例如,您可以接近
git show-branch master dev newbranch
每个分支分配一列。