【发布时间】:2015-01-15 23:20:51
【问题描述】:
我目前正致力于在一个相当复杂的开发环境中实施 git 使用指南,虽然我认为我已经很好地设置了基础知识,但有一个问题特别想了解一下可能的。这不是一个纯粹的技术问题,因为它更多的是关于哪些可用选项最合适。
基本上,我倾向于一个与常见的“git 流”结构 (http://nvie.com/posts/a-successful-git-branching-model/) 非常相似的系统,但有一些例外是为了适应我们的开发环境。简而言之:
- 一个项目将至少有一个“开发”和“主”分支
- 'master' 将包含最新的生产就绪代码
- 'develop' 将包含最新的合并代码
- 其他任何内容都将位于“feature/ticket{number}”或“hotfix/ticket{number}”分支中
- 功能分支将从“开发”创建,修补程序分支从“主”创建
- 分支名称中的编号将始终与我们自己的更改/错误系统中的票号相对应
- 功能可以单独测试,也可以组合测试,方法是构建适当的分支或先将其合并到“开发”中
到目前为止,它确实帮助我们简化了开发并防止了项目之间的冲突。在这里引发一些争论的一个细节是;我们是否应该使用“--squash”选项将功能/票证分支合并回它们各自的起源?我有点喜欢这个,我喜欢它:
- develop 的 git 日志保持干净可读,所有提交都将简单地说明原始分支名称(告诉我们它是修补程序还是功能,以及票号)
- 即使在清除了原始功能或修补程序分支后,合并后也不会造成混乱
也许这些理由不够好,也许有充分的理由在这种情况下不使用“--squash”。有什么想法吗?
【问题讨论】:
标签: git version-control merge