Git 功能分支中的错误修复
我们正在使用Vincent Driessen的分支模型。一切都很好,但我还没有真正看到有人提出什么特别的问题 据我所知,当需要一个新特性时,您需要Git 功能分支中的错误修复,git,git-branch,branching-and-merging,feature-branch,Git,Git Branch,Branching And Merging,Feature Branch,我们正在使用Vincent Driessen的分支模型。一切都很好,但我还没有真正看到有人提出什么特别的问题 据我所知,当需要一个新特性时,您需要开发分支并创建一个新的特性分支。您将处理这个问题,完成后,您将把这个分支合并到开发分支中 如果开发人员创建了一个功能,然后将该功能合并回开发,结果发现功能代码中存在一些错误,该怎么办。这个问题应该在哪里解决?新的修复/错误修复分支是否应该从开发开始并在那里修复代码?我看不到别的办法 这件事怎么办 感谢如果该功能分支是公共分支(即推送到其他人克隆/使用的
开发分支
并创建一个新的特性
分支。您将处理这个问题,完成后,您将把这个分支合并到开发
分支中
如果开发人员创建了一个功能,然后将该功能合并回开发
,结果发现功能代码中存在一些错误,该怎么办。这个问题应该在哪里解决?新的修复
/错误修复
分支是否应该从开发开始并在那里修复代码?我看不到别的办法
这件事怎么办
感谢如果该功能分支是公共分支(即推送到其他人克隆/使用的远程repo),最好创建一个新分支并隔离所述修复分支中的调试。
(而不是尝试在“
开发
”分支上重新设置“功能
”分支的基础)
我们的想法仍然是不直接在develope
分支中记录中间调试提交,而是只记录最终提交,这将首先修复功能
分支合并引入的错误。只需创建一个分支(或使用旧的、合并的功能
分支)并在那里修复它
使用旧分支/创建新分支是一样的——你无法命名合并后的分支。记住,模型只是一个模型——它是为了给你一个使你更高效的结构,而不是盲目地遵循一套规则。这意味着你应该自由地调整事情,找出在你的情况下什么是有效的,因为它可能不适用于所有情况 在这种情况下,我认为你有一个选择:
- 你的客户能看到错误吗?进行错误修复或热修复分支
- 这个bug真的很糟糕,并且阻止了开发分支的其他进展吗?把零钱滚回去
- 这只是一个外部影响最小的小问题吗?只需继续处理功能分支,并在准备就绪时再次合并即可
- 不存在由于重基操作而创建断开引用的风险
- 仅从开发分支、功能分支和任何其他可能受影响的分支的起源,您就可以知道在完成错误修复分支后应该将其合并到哪里。这是真实的,即使“功能”已经与“开发”合并了好几次,因为引入了错误
- 如果您确定了引入bug的提交,并从中找到根,开发人员将能够知道他们需要在哪里合并bug修复分支,即使他们不熟悉repo布局
- 您将拥有一个可以合并的分支,而不用担心引入不相关的后续更改。例如,假设有人正在开发“FeatureBeta”,这是“feature”的一个分支,在引入bug后不久就出现了分歧。他们可以轻松地引入bug修复分支,而不必担心也会引入“feature”上发生的所有其他内容
- 这种方法减少了对cherry pick的需要,其缺点是更改了提交的名称(从而破坏了git的一个巨大优势,即对所有内容都应用一个明确的名称)