下面的截图取自SourceTree。我创建了一个简单的git仓库,其中包含一些提交。对于每一次提交,评论说明我进行提交时我在哪个分支上。为什么git分支图不能正确地跟踪分支?
正如你所看到的,树图是(可以说)次优的,该提交掌握都不尽相同的颜色,也不是在一个单一的车道。为什么是这样?
(由GitHub上和到位桶得出的树形图看起来类似的问题受苦,所以它不只是SourceTree。)
显然它没有多大关系在这个简单的例子,但在我的一些项目,我们使用git-flow的变体,并且在查看树图时通常很难跟踪每个git-flow“泳道”。部分原因是因为树形图不会随着时间的推移保持每个泳道的颜色相同。
我怀疑是树图是(可以说)不理想的,因为git的回购实际上并不包含足够的信息来绘制树图我想要的方式。特别是,当两个提交是一个普通提交(例如,当你分支)的子代时,git不知道父提交是否与子1或子2“在同一分支上”。或者换句话说,它不会不知道哪个小孩是树枝,哪个小孩是树干的延续。我有这个权利吗?
承诺掌握所有在单个通道中的通道:在提交94f458e处从蓝色变为紫色的通道。至于为什么它们是不同的颜色,那么对于源代码来说,这比堆栈溢出更重要。也许开发人员选择将按时间顺序排列的最新提交的路径视为不分支的路径?根据路径的名称提交功能请求以更改它。 – 2014-11-05 23:36:41
当我说“车道”时,我的意思是“列”。而我所希望的是,如果所有提交给主人的提交都在一个列中,而要发布的提交到另一列中。我的意思是,如果你给了人类DAG,分支指针和提交列,他们可能不会像上面那样绘制树图。 – 2014-11-06 15:37:50
尽管git并没有要求用户提供足够的信息来绘制正确的泳道,但在许多情况下,通过使用提交消息作为提示可以推断出更好的绘图。例如,合并消息通常开始“合并分支'B'到A”;在这种情况下,很明显两个源分支的名称应该用于泳道目的。用户可以轻松添加更多清晰度;例如,每当我创建一个分支时,我都会在其中创建一个空的提交“从'A'创建分支'B'”。图形绘制程序可以提供更多的提示。 – 2017-01-17 02:53:26