如何知道哪个提交属于哪个分支

时间:2014-03-10 23:28:50

标签: git

当我使用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(重置)'

4 个答案:

答案 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中”),并且您将始终能够分辨出属于哪个分支。如果在进行合并提交时删除或覆盖这些消息,那么您将无法分辨出哪个分支。

我总是在我的提交中明确说明我所触及的内容,因为它通常是一个文件中的一些小变化。注意从a12c71222c780b的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(重置)'

相关问题