我们公司目前正在使用一个简单的主干/发布/修补程序分支模型,并希望就哪些分支模型最适合您的公司或开发过程提供建议。
工作流/分支模型
以下是我所看到的对此的三个主要描述,但它们之间存在部分矛盾,或者不足以理清我们遇到的后续问题(如下所述)。因此,到目前为止,我们的团队默认的解决方案不是那么好。你在做更好的事情吗?
合并与变基(纠结与顺序历史)
是否应该
pull --rebase
等待合并回主线,直到您的任务完成?就我个人而言,我倾向于合并,因为它保留了任务开始和完成的视觉说明,我什至更喜欢merge --no-ff
这个目的。然而,它还有其他缺点。许多人还没有意识到合并的有用属性——它不是可交换的(将主题分支合并到主分支并不意味着将主分支合并到主题分支)。我正在寻找一个自然的工作流程
有时会发生错误,因为我们的程序没有使用简单的规则捕捉特定情况。例如,早期版本所需的修复当然应该基于足够的下游,以便可以将上游合并到所有必要的分支中(这些术语的使用是否足够清楚?)。然而,在开发人员意识到它应该被放置在更下游的地方之前,一个修复程序会使其成为主控器,如果它已经被推送(更糟糕的是,合并或基于它的东西),那么剩下的选项就是樱桃采摘,与其相关的危险。你使用什么样的简单规则?这还包括一个主题分支的尴尬,它必然排除其他主题分支(假设它们是从一个公共基线分支的)。开发人员不想完成一个功能来启动另一个功能,感觉就像他们刚刚编写的代码已经不存在了
如何避免创建合并冲突(由于樱桃挑选)?
似乎创建合并冲突的可靠方法是在分支之间进行挑选,它们永远不能再次合并?在任一分支中应用相同的提交恢复(如何做到这一点?)可能会解决这种情况?这是我不敢推动很大程度上基于合并的工作流程的原因之一。
如何分解成局部分支?
我们意识到从主题分支组装一个完整的集成会很棒,但是我们的开发人员的工作通常没有明确定义(有时就像“四处寻找”一样简单),如果某些代码已经进入“杂项”主题,根据上面的问题,它不能再次被带出那里吗?您如何定义/批准/毕业/发布您的主题分支?
像代码审查和毕业这样的适当程序当然会很可爱。
但是我们根本无法让事情变得足够解开来管理这个 - 有什么建议吗?集成分支,插图?
以下是相关问题的列表:
- 有哪些好的策略可以让已部署的应用程序可修复?
- 内部开发使用 Git 的工作流程描述
- 用于企业 Linux 内核开发的 Git 工作流程
- 您如何维护开发代码和生产代码?(感谢这个PDF!)
- git 发布管理
- Git Cherry-pick vs 合并工作流
- 如何挑选多个提交
- 如何使用 git-merge 合并选择性文件?
- 如何挑选一系列提交并合并到另一个分支
- ReinH Git 工作流程
- 用于进行修改的 git 工作流,你永远不会推回原点
- 樱桃选择合并
- 组合操作系统和私有代码的正确 Git 工作流程?
- 使用 Git 维护项目
- 为什么 Git 不能将文件更改与修改后的父/主合并。
- Git 分支/变基良好实践
- “git pull --rebase”什么时候会给我带来麻烦?
- 大型团队如何使用 DVCS?
还可以查看 Plastic SCM 写的关于任务驱动开发的内容,如果 Plastic 不是您的选择,请研究nvie 的分支模型和他的支持脚本。