Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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_Git Merge_Git Rebase_Git Flow_Git Config - Fatal编程技术网

防止git合并的错误方式

防止git合并的错误方式,git,git-merge,git-rebase,git-flow,git-config,Git,Git Merge,Git Rebase,Git Flow,Git Config,目前,我们的产品的不同版本有不同的git分支。例如:称为v1.0、v2.0、v3.0的分支和主分支 不同的客户运行不同的版本,但新功能仅合并到最新版本分支和主分支中。但是,在较低版本的分支上,仍然会合并错误修复。假设在v1.0上发现了一个bug,那么我们当前的git工作流是: 要从v1.0生成功能分支 修复 合并回v1.0并推送 将v1.0合并到v2.0并推送 将v2.0合并到v3.0并推送 将v3.0合并到master和push中 这会导致在较低版本上发现的错误修复包含在产品的所有以上版本中

目前,我们的产品的不同版本有不同的git分支。例如:称为v1.0、v2.0、v3.0的分支和主分支

不同的客户运行不同的版本,但新功能仅合并到最新版本分支和主分支中。但是,在较低版本的分支上,仍然会合并错误修复。假设在v1.0上发现了一个bug,那么我们当前的git工作流是:

  • 要从v1.0生成功能分支
  • 修复
  • 合并回v1.0并推送
  • 将v1.0合并到v2.0并推送
  • 将v2.0合并到v3.0并推送
  • 将v3.0合并到master和push中
  • 这会导致在较低版本上发现的错误修复包含在产品的所有以上版本中

    因此,V3.0将包含v2.0包含的所有提交,以及在V3.0版本上进行的附加功能提交。Master将包含v3.0包含的所有提交,以及产品未来版本的附加功能提交等

    现在我们已经有过几次,人们以错误的方式进行合并,向下而不是向上。例如,他们将v3.0合并到v2.0中。这就造成了巨大的问题,因为无论何时,只要有针对客户的产品的新错误修复版本出现在软件的v2.0版上,他们实际上都会得到v3.0版

    事实上,以错误的方式进行这些合并非常容易,但后果可能非常严重,特别是如果错误的合并长时间未被发现

    有没有办法防止人们在版本分支中向下合并,而只向上合并?(因此从v1.0到v2.0等)

    我应该提到,我们不能在服务器端定义任何自定义git钩子。

    有一种方法是完全可靠的,您已经完全排除了这种方法:

    我应该提到,我们不能在服务器端定义任何自定义git挂钩

    如果没有这一点,您所拥有的一切都是不可靠的,这取决于每个用户的方法

    每个用户都可以安装自己的挂钩。您可以设置预推挂钩,检查以确保您没有做您不喜欢的事情。如果每个用户都这样做,并且假设每个用户也没有绕过钩子,这将阻止推送,而推送会做一些您不喜欢的事情

    编写钩子并不是那么容易,当然,如果有人没有安装钩子,或者安装不正确,或者绕过钩子,它将没有任何效果。但它是可用的

    (虽然有一个合并后钩子,但没有预合并钩子。这就是我建议使用预推钩子的原因。)