1
6
无论出于何种原因,我看到越来越多的关于这一拟议工作流程的问题。它总是导致问题。我将讨论如何接近您的要求,但我也将讨论为什么它总是导致问题。
首先让我们把这件事弄清楚:你提到
所以在git中,假设分支(尤其是将要合并的分支)是相同内容的不同版本。这意味着,或多或少是同一组文件,而不是文件的子集。(“或多或少”,因为一个分支可能添加或删除了另一个分支中尚不存在的文件;但在这种情况下,假设后续合并将添加或删除另一个分支中的文件。)
我见过很多人尝试一种方法,在那里他们进行分支,然后删除除一个子集以外的所有文件。然后,当它们合并时,这些文件将从
提交是项目快照;这是git中预期的内容单元。(你可以说对象是最基本的内容单元,在git的物理模型中我也同意。但在git作为源代码管理的概念模型中,它是提交。)因此,提交可以表示项目的一致版本。您可以构建和测试任何提交。 (“但我可以独立构建每个分支上的代码子集!”那么,您可能在同一回购协议中有多个项目,应该重新考虑。稍后将详细介绍。) 在我开始“如何”讨论之前,有几个问题:
您声明的问题是您必须合并
我的第二个问题是,“那又怎样?”,因为即使你
做
决定合并
但好吧,很好。让我们假设您不相信,并且有一个用例,您只需要有部分源代码的分支。 如何做到这一点?
正如我上面所说的,如果您从创建整个项目树开始,然后在分支上删除文件,那么您将度过一段糟糕的时光。合并自
通过将分支创建为孤立分支或“空”提交的子分支,您可以做得更好
现在,这是 较好的 因为没有要解决的删除问题,但它只在分支不相交的情况下工作,即不共享代码。如果他们要共享代码。。。您在哪里创建它?
您可以创建
只有共享代码
在…上
这就指向了另一个问题:即使没有共享代码,您也可以
不能
合并
那么你应该怎么做呢?
在非常有限的情况下,每个分支都有一组不存在于其他分支中的文件,我已经概述了一个模型,该模型可能基本上可以工作。。。但为什么要使用它呢?这没有道理。您拥有的是独立的代码库,所以只需将它们放在单独的回购协议中即可。如果您想让一个协调分支将它们联系在一起(例如
在共享某些代码的情况下,仍应将每个“特定于分支”的代码集视为其自己的项目(应获得自己的回购),此外,还应将共享代码视为其自己的项目。然后使用构建工具声明对特定项目中共享代码的依赖关系。 这不仅使您摆脱了与源代码管理工具的粒度对抗的工作(当您试图解决非源代码管理问题时),它还为您提供了一系列的能力(在构建复杂的构建基础设施的能力方面),您甚至可能没有意识到您丢失了这些能力。 |