Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从旧标签获得git修补程序的最佳实践_Git_Version Control_Branching And Merging - Fatal编程技术网

从旧标签获得git修补程序的最佳实践

从旧标签获得git修补程序的最佳实践,git,version-control,branching-and-merging,Git,Version Control,Branching And Merging,我最近开始与git合作一个开源项目,并决定按照Vincent Driessen的想法工作 我理解这种模式背后的原因,并且我已经看到它被广泛推荐,所以它似乎是一个不错的选择 我在这个模型中缺少的是,在为旧版本(标签)创建修补程序的情况下,它是一种推荐的方式,但我在网上找不到 例如,我的master包含最新版本-2.0,并且我有版本1.5和1.0的标记。现在,假设一位正在使用1.0版的客户发现该版本中有一个bug,但不希望更新到包含该bug修复的较新版本,只需要一个修补程序\补丁(不确定这里的正确术

我最近开始与git合作一个开源项目,并决定按照Vincent Driessen的想法工作

我理解这种模式背后的原因,并且我已经看到它被广泛推荐,所以它似乎是一个不错的选择

我在这个模型中缺少的是,在为旧版本(标签)创建修补程序的情况下,它是一种推荐的方式,但我在网上找不到

例如,我的master包含最新版本-2.0,并且我有版本1.5和1.0的标记。现在,假设一位正在使用1.0版的客户发现该版本中有一个bug,但不希望更新到包含该bug修复的较新版本,只需要一个修补程序\补丁(不确定这里的正确术语是什么)。根据该模型,不会处理这种情况,在该模型中,热修复程序固定在热修复程序分支上,然后合并到主线(master\dev)。但在我的示例中,客户只需要最小的提交集,它可以在没有新特性的情况下(尽可能多地)修复bug

在这种情况下,什么是git方面的最佳方法?我是否应该从标记1.0和cherry pick提交创建一个专用分支?我是否应该从修复问题的第一次提交开始进行分支,如果更容易的话,是否应该恢复?我应该让这根树枝永远活下去吗

我想知道在以下情况下该怎么办:

  • 该错误在更高版本中已经修复,例如1.5和2.0之间的某个版本
  • 这是一个新的bug,也应该合并到master中
  • 欢迎参考具有不同分支模型的最佳实践

  • 该错误在更高版本中已经修复,例如1.5和2.0之间的某个版本
  • 如果开发遵循合理的流程(例如:追溯兼容性、增量扩展等),那么用户的最佳解决方案是检查最新版本

    另外,正如你所说的,你应该考虑从标签1创建一个新的分支,樱桃选择热修复,然后将分支标记为一个颠覆(1.0.1)。 您应该将相同的策略应用于下一次提交,或者至少应用于下一个标记:假设修补程序将在1.5版中发布,给定标记列表[1.0,1.2,1.3,1.5],您应该创建Subversion[1.0.1,1.2.1,1.3.1]

  • 这是一个新的bug,也应该合并到master中
  • 修补程序通常从主分支负责人指出的提交开始应用

    不建议重写历史记录,因为您的项目将与其他人共享,并且在同步点(推/拉)上会有冲突。选择最合理的解决方案,但不要修补与社区共享的承诺

  • 该错误在更高版本中已经修复,例如1.5和2.0之间的某个版本
  • 如果开发遵循合理的流程(例如:追溯兼容性、增量扩展等),那么用户的最佳解决方案是检查最新版本

    另外,正如你所说的,你应该考虑从标签1创建一个新的分支,樱桃选择热修复,然后将分支标记为一个颠覆(1.0.1)。 您应该将相同的策略应用于下一次提交,或者至少应用于下一个标记:假设修补程序将在1.5版中发布,给定标记列表[1.0,1.2,1.3,1.5],您应该创建Subversion[1.0.1,1.2.1,1.3.1]

  • 这是一个新的bug,也应该合并到master中
  • 修补程序通常从主分支负责人指出的提交开始应用


    不建议重写历史记录,因为您的项目将与其他人共享,并且在同步点(推/拉)上会有冲突。选择最合理的解决方案,但不要修补您与社区共享的提交。

    即使在1.0版中发现了此错误,但实际上它是新的。没有人能确定旧版本没有bug,因此对于新的find bug,您应该在最新版本中修复它。因此,对于您的情况,您应该修复基于2.0的bug


    因为
    master
    分支是托管在上的主代码(或者我们称之为生产环境),所以您应该解决
    hotfix
    分支上的错误,然后将其合并到
    master
    分支中。然后删除旧的标记2.0,并为新的合并提交添加标记2.0。

    即使在版本1.0中发现了此错误,但实际上它是新的。没有人能确定旧版本没有bug,因此对于新的find bug,您应该在最新版本中修复它。因此,对于您的情况,您应该修复基于2.0的bug


    因为
    master
    分支是托管在上的主代码(或者我们称之为生产环境),所以您应该解决
    hotfix
    分支上的错误,然后将其合并到
    master
    分支中。然后删除旧的标记2.0,并为新合并的提交添加标记2.0。

    替换发布的标记似乎很危险,因为没有人能分辨出哪个是该修复程序的级联效应,您不想重新部署2.0并具有不同的行为。替换发布的标记似乎很危险,因为没有人能分辨出哪个是该修复程序的级联效应,您不希望重新部署2.0并有不同的行为。