当我使用git log --graph
(或我的别名)时,如何判断哪个提交(*)属于哪个分支?
这是我的gitconfig
tree = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(boldblue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(black)%s%C(reset)%C(dim black)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
任何帮助都会摇滚!
更新 我最终使用: git log --all --graph --format = format:'%C(粗体蓝色)%h%C(重置)%C(暗淡黑色)%s%C(重置)%C(粗体红色)%d% C(重置)%C(绿色)乘以%an,%ar%C(重置)'
答案 0 :(得分:3)
你真的需要git log
吗?
再次tig
以更好的方式表示这一点:分支的名称在第一次提交右侧的方括号之间表示。
使用tig
安装sudo apt-get install tig
,然后将存储库的根目录作为当前目录并运行tig
。
屏幕将显示三组列:第一组包含有关提交的信息(日期和作者),第二组将显示树的ASCII艺术,第三组将提供消息。
tig
还表示树中提交的类型(initial(I
)/ commit(O
)和merge(M
))。标签用紫色表示,分支头用青色表示,分支头用橙色表示。
有时并非显示所有分支(如果数字太大)。在这种情况下,您可以运行tig --all
此处提供了更详细的手册:http://jonas.nitro.dk/tig/manual.html
答案 1 :(得分:2)
要查看X中的git历史记录,您可以使用gitk
(vanilla git套件的一部分,可能是您的发行版中的单独软件包)。 git也有几个git图形前端。
答案 2 :(得分:2)
我只使用git log --all --graph --oneline --decorate
。
Git重新排列此图表,因为您提交的内容始终显示从右向左进入的合并。你总能分辨出什么是分支,以及它在哪里合并,因为这样,即使它开始变得曲折。以下是我的一个repos的示例代码段,作为上述日志命令的输出:
| * af8bb24 Remove mayaaxis.py
| * 39b27d7 Remove axis.py
|/
* a12c712 Merge branch 'MayaObject'
|\
| * 755c024 Elide pymel.core.animation import in core.py
| * 6de87c2 Clean up imports in core.py
| * 4b70adf Move core.RefGrid to new grid.py
| * 40d3c7d Merge branch 'absorbMayaRef' into MayaObject
| |\
| | * 58305e5 Add core.MayaObject test for refFile property
| | * 154af30 Refactor core.MayaObject refPath to refFile
| | * d23fe77 Condense namespace work in core.MayaRef.loadRef
| | * 22c780b Add missing test for core.MayaRef namespace arg
| |/
| * 6843970 Remove projPath arg from core.MayaRef constructor
| * 692578a Add docstrings to core.MayaObject test classes
| * acb4d75 Add core.MayaObject init defaults test
| * b8f1ae6 Stub in core.MayaObject
|/
* 4dc6112 Make __init__.py imports relative
* abde256 Add *.swp, and *.swo to .gitignore
注意顶部附近的a12c712
提交 - 这是前“MayaObject”分支的合并,它在4dc6112
提交的底部附近开始。您可以看到它在底部向右分支,然后合并回到靠近顶部的左侧。 'MayaObject'分支上的第一个提交是b8f1ae6
,它向右移动 - 分支总是向右移动,合并总是向左移动。
您还可以看到,当我在'MayaObject'分支上时,我决定再次跳转并继续处理'absorbMayaRef'分支,该分支从6843970
分叉,并且它的第一个提交是{{ 1}}。它在22c780b
合并回'MayaObject',然后在开头所述的'MayaObject'合并回40d3c7d
的主分支。
保留自动生成的合并提交消息(例如“合并分支'absorbMayaRef'到MayaObject中”),并且您将始终能够分辨出属于哪个分支。如果在进行合并提交时删除或覆盖这些消息,那么您将无法分辨出哪个分支。
我总是在我的提交中明确说明我所触及的内容,因为它通常是一个文件中的一些小变化。注意从a12c712
到22c780b
的4次提交(包括所有提交)都提到'core.MayaRef'或'core.MayaObject'。即使我没有58305e5
合并告诉我那是'absorbMayaRef'分支,我仍然可以很快看到该功能分支与核心模块中的某些东西有关,并且特别是那2个班级。当我的更改触及大量文件时,我会尝试清楚地说明这一点,并注意更改中发生的事情,例如“在库中重构路径名”或“在几个测试文件中重新组织测试”。
答案 3 :(得分:0)
我最终使用:git log --all --graph --format = format:'%C(粗体蓝色)%h%C(重置)%C(暗黑色)%s%C(重置)%C(粗体红色)%d%C(重置)%C(绿色)按%an,%ar%C(重置)'