Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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_Github - Fatal编程技术网

Git 发布同一软件的不同版本,您应该分叉还是分支?

Git 发布同一软件的不同版本,您应该分叉还是分支?,git,github,Git,Github,我有一个软件库。我将发布这个软件的不同功能的不同版本,但它们都共享相同的基本功能和代码库。 我想出了三种可能的解决办法 每个版本是否都应该在主回购协议中有自己的分支机构 每个版本都应该从主回购协议中派生出来吗 每个版本完全独立的回购协议 还有什么其他选择,哪一个是最好的 以下几个问题可能会引导你的思考: 1) 如果对一个版本进行了更改,是否希望该更改反映在其他版本中?这包括保持功能同步和统一应用错误修复 2) 你喜欢为自己创造不必要的工作吗 如果第(2)项的答案是“是”,那么我肯定看到了多重

我有一个软件库。我将发布这个软件的不同功能的不同版本,但它们都共享相同的基本功能和代码库。 我想出了三种可能的解决办法

  • 每个版本是否都应该在主回购协议中有自己的分支机构
  • 每个版本都应该从主回购协议中派生出来吗
  • 每个版本完全独立的回购协议

还有什么其他选择,哪一个是最好的

以下几个问题可能会引导你的思考:

1) 如果对一个版本进行了更改,是否希望该更改反映在其他版本中?这包括保持功能同步和统一应用错误修复

2) 你喜欢为自己创造不必要的工作吗

如果第(2)项的答案是“是”,那么我肯定看到了多重回购的吸引力

如果(1)的答案是“否”,那么我假设(2)的答案必须是“是”


如果(1)的答案是“是”,而(2)的答案是“否”,那么你需要一个单一的代码库——这意味着一个单一的回购。我甚至不会使用单独的分支;使用适当的构建工具,可以在一个完全集成的代码库中处理此问题。

如果您不是管理构建工具/CI的专业用户,那么我建议使用多个分支

  • 您不会弄乱整个存储库
  • 如果需要,您仍然可以将一个分支中的更改重新基址/合并/选取到另一个分支

  • 如果不是太基于观点,这似乎更适合程序员。SE,因为它是关于软件开发生命周期的,而不是专门编程。下面是一个练习:分支和克隆之间的确切区别是什么?(如果您使用Mercurial,进行此练习尤其重要,因为创建新克隆是启动分支的更常见的方法。)顺便说一句,此练习的目的不在于(仅仅)知道答案,而是让您思考如何使用版本控制系统。