在具有相同基础的多个项目上使用 git 的最佳实践是什么?

Iqb*_*fri 7 git

我有一个在客户端上运行的项目,该项目使用 git 作为其版本控制。
过了一会儿,另一个客户想要具有一些不同功能的同一个项目。

然后,我想到了 2 个选项来管理 git 存储库中的新选项。

一个,分叉存储库,或两个,为新存储库创建另一个特定的分支。

因为我是 git 的新手,所以我做了这两个来测试哪个更容易维护。后来我选择了选项二,因为修复客户端中的错误要容易得多,然后将其挑选到另一个分支(如果错误在其他客户端使用的功能中)。而且在 IDE 中切换分支似乎比拥有多个项目更容易。

但是,我仍然不相信这是几个项目的最佳实践,因为现在我有更多的客户(因此,更多的分支机构)。

对每个功能使用分支真的很混乱,我想利用 git 的拉取请求功能。我开始认为最好在他们的个人存储库中分离项目。
但是如果我这样做了,我还能在我的 IDE 中使用单个项目吗?

如何将错误修复“推送”到另一个存储库,而不必在另一个项目中重新编码(再次编码、复制粘贴或使用差异)?

我在做正确的事吗?
或者有没有更好的方法来做到这一点?

先感谢您。

mea*_*gar 7

版本控制不是这个问题的答案,这不是一个它从来没有打算解决的问题。您应该为所有客户拥有一个单一的代码库,并且您应该以可以在该代码库中打开和关闭这些功能的方式构建您的功能。

这是否意味着将功能提炼为可加载模块,或者构建它们以使您的代码充满if/else语句取决于您,但任何一种解决方案都比分散分支的爆炸要好。每个客户端分支的解决方案几乎不比将整个代码库复制并粘贴到每个客户端的新目录好多少。如果您最终需要独立维护一百个客户端和一百个不同的分支,那么您也不会因为版本控制而变得更好。


Cod*_*ard 3

为新存储库创建另一个分支。
...
将其挑选到另一个分支

这才是正确的工作方式。使用分支时,您可以选择在分支之间共享代码。添加功能或修复错误后,您可以非常轻松地将其添加到您想要的任何所需分支。

所以分支是正确的方法。


然而,我仍然不相信这是几个项目的最佳实践,因为现在我有更多的客户(因此,有更多的分支机构)。

  • 如果您希望对所有项目/产品使用相同的代码,您应该使用分支。
  • 如果您有共享的部分代码,并且每个项目都有自己的一组功能,您应该使用子模块

请记住,即使您使用不同的存储库,您仍然可以在不同的项目之间使用cherry pick(添加多个遥控器后)。


使用每个功能分支确实很令人困惑

这是使用 git 的推荐方式。
Git 流程是 git 最常用的工作流程之一


如何将错误修复“推送”到另一个存储库,而不必在另一个项目中重新编码(再次编码、复制粘贴或使用 diff)它们?

将多个遥控器添加到您的存储库中,您可以同时使用它们。