流应该看到一个比发展更加压缩的历史吗?
请原谅我的无知,但我试图将“git-flow”模型付诸实践(手动,没有git-flow工具集)。
我觉得有趣的一个概念是,有一个主分支,每个提交都是真正可行的发布。 所以你有主标记的v1.0.0提交,然后你的v1.1.0标记,当查看主控时,这是一个很好的2-commit-long日志。 但是,您准备好发布v1.2.0并且您的develop
分支有1000个中间提交,但是您已准备好签署并按下按钮以说“没问题,这是发布时间”。
我的目标是在主时间轴上添加第三次提交。 我可以看到--squash
选项允许您向主服务器添加一个提交,因此您可以查看主日志并查看您的三个提交:v1.0.0,v1.1.0和v1.2.0。 虽然开发分支可能很冗长冗长,但压缩会让你下载到每个版本都是官方发布的大师的整洁历史......没有机会抓住中间开发承诺!
它可以工作,但困扰我的事情是,在网络图中查看会产生“断开”的提交。 没有明显的关系,Git明白将这个压制的第三方承诺绑定到开发分支的所有成千上万的附加组件上。 它似乎独自浮动,不像手绘的git-flow图,而且始终将事物指向事物。
其他合并选项可以获得“合并箭头”(又称为多个父项)似乎具有建立到中间提交的连接的副作用。 所以,突然之间,主人不仅仅是这三个有福的承诺......它已经扩展到包含所有这1000次承诺的完整历史。 如果主人的意图是成为仅包含可释放版本的分支,那么这种目的似乎击败了目的......但突然间,每个中间状态都对主人有一个承诺。 1003而不是3个主提交。
Git可视化有点阴险,因为它掩盖了分支机构的重复。 所以我在git-flow上看到的图表是图片而不是git log
终端打印输出等。我不确定从一个声明中期望什么,比如说master只包含可释放版本。
长话短说:除非他们提供完整的提交历史记录,否则我找不到在发布点保留发展和主控之间“箭头”关系的选项。 如果我看看有很多箭头的GIT流程图,这是否会让我担心? 在我概述的场景中,我应该查看主历史记录并查看合并的每个中间开发版本以及1003提交历史记录或3个提交历史记录吗?
git-flow是否应该在主开发者看到更多的压缩历史?
不。基本上(忽略修补程序和发布候选分支):master = develop + merge commit。
在我概述的场景中,我应该查看主历史记录并查看合并的每个中间开发版本以及1003提交历史记录或3个提交历史记录吗?
这取决于您请求的主历史记录的特定视图。 但通常情况下,您应该看到1003次提交的历史记录。
git-flow中的历史
更一般地说,并根据一些隐含的假设:使用git-flow来保存和连接提交历史记录。 所以与--squash
合并是绝对不行的,因为它(正如你已经观察到的)不会将master与主导它的发布状态的开发线连接起来。 恰恰相反,你绝对要确保每一次掌握的东西总是一个合并提交 - 完全与什么--squash
相反。 这就是为什么你总是在git-flow中合并--no-ff
。 (在当代版本的Git中,您可以将merge.ff
选项设置为false
并停止担心忘记--no-ff
。)
还要注意文森特Driessen的原始git流文章确实检查这些问题。
扁平化的危险
请注意,平面(线性)视图必须使用展平策略来将整个图形简化为线性外观。 这种扁平化可能会让人困惑。
作为考虑的一个例子,考虑示例图中的第二个青色节点和第五个黄色节点。 现在假设第二次青色提交是在第五次黄色提交后一天进行的。
---1-----------------7----------10~~ master
/ /
2---3---4---5--6-----8---9~~~~~ develop
(我知道在git-flow的情况下这是一个颇为人为的例子,如果没有发布候选分支,通过将其合并到主中来发布“第二个最新的”提交是非常不寻常的。)
如果您现在从master
视角展开这段历史,您希望如何表现它? 你应该主要使用时间排序,因此给你:
10 9 8 7 6 5 4 3 2 1
(这个时间顺序是默认的git log
和Github的“提交”视图会给你的。)
或者你想让合并提交集成的提交全部出现在一起?
10 9 8 6 7 5 4 3 2 1
(这种“拓扑”排序是例如git log --topo-order
会显示给你的。)
或者你只想要从一条祖先线产生的提交?
10 7 1
(这最接近地对应于要求“仅向我展示直接提交到主”,这似乎是你期望看到的一部分。在git-flow设置中,master的git log --first-parent
会向你显示这个视图。)
上一篇: flow supposed to see a more compressed history on master than develop?
下一篇: How to check if core files have been modified or not in magento?