使用git回购协议作为公共基础
假设我有一些代码,它们构成了一些酷东西的基本框架。我把它放在一个repo中,我将调用使用git回购协议作为公共基础,git,Git,假设我有一些代码,它们构成了一些酷东西的基本框架。我把它放在一个repo中,我将调用cool app base 现在,我有一些很棒的应用程序的好主意。我希望他们使用酷酷的应用程序库,并从中构建。当然,我可以选择克隆和孤立,以及分叉和重命名等。为了举例说明,假设我为我想要的做了最好的事情,并创建了cool-app-1 我不打算从cool-app-1重新加入cool-app-base,所以两者都可以。但我确实希望能够将我对cool-app-base所做的任何更新带入cool-app-1 问题是,co
cool app base
现在,我有一些很棒的应用程序的好主意。我希望他们使用酷酷的应用程序库
,并从中构建。当然,我可以选择克隆
和孤立,以及分叉
和重命名等。为了举例说明,假设我为我想要的做了最好的事情,并创建了cool-app-1
我不打算从cool-app-1
重新加入cool-app-base
,所以两者都可以。但我确实希望能够将我对cool-app-base
所做的任何更新带入cool-app-1
问题是,cool-app-1
不应该关心cool-app-base
的历史。我想将这些更新视为压缩提交,这样更新可以有一条提交消息“update with latestcool app base
”,并且可以完成。这使得fork
不那么吸引人,但听起来我唯一的选择是手动将cool-app-base
代码更改合并到cool-app-1
,这样我就可以控制提交历史记录了
我的问题是:我怎样才能做得更好?我确信我可以使用一些时髦的git合并
选项,但我还没有足够的经验来自信地探索它们
澄清:酷应用程序库
不是一个库,而是一组配置文件。虽然它们当然可以单独分解和导入,但我的意图是将它们捆绑在一起。我希望将cool-app-base
的文件作为cool-app-1
的根目录,而不是嵌套在子目录中。我试图解决的实际问题是,每当我想启动一个新项目时,不需要重新创建我的包文件、目录结构和一组精心构建的脚本。如果我的配置文件在子目录中,我仍然需要创建它们的引用,在我只考虑更多的样板代码。
同时,我认为这个概念是语言不可知的,我在<代码> JavaScript < /C>中使用<代码>节点< /C> >和<代码> NPM 。p> 在我看来,您可以使用,make
cool-app-base
作为cool-app-1
的子模块。然后,cool-app-1
将在物理文件资源中包含子文件夹cool-app-base
,并且不会干扰存储库的Git历史记录
Git使用子模块解决了这个问题。子模块允许您将一个Git存储库保留为另一个Git存储库的子目录。这使您可以将另一个存储库克隆到项目中,并使提交保持独立
我认为,您可以使用make
cool-app-base
作为cool-app-1
的子模块。然后,cool-app-1
将在物理文件资源中包含子文件夹cool-app-base
,并且不会干扰存储库的Git历史记录
Git使用子模块解决了这个问题。子模块允许您将一个Git存储库保留为另一个Git存储库的子目录。这使您可以将另一个存储库克隆到项目中,并使提交保持独立
你没有提到你的编程语言。但大多数语言都带有某种包管理器:
- JavaScript:npm
- 爪哇:马文,格雷德尔
- Python:pip
squash
)
稍后,您可以使用一个命令更新到新版本。您没有提到您的编程语言。但大多数语言都带有某种包管理器:
- JavaScript:npm
- 爪哇:马文,格雷德尔
- Python:pip
squash
)
稍后,您可以使用一个命令更新到新版本。谢谢您的回答。我已经对我的问题做了一些澄清,希望能使我的目标更加清晰。谢谢你的回答。我已经对我的问题做了一些澄清,希望能使我的目标更加清晰。谢谢你的回答。我已经对我的问题做了一些澄清,希望能细化我试图完成的事情。@JIM01做
cool-app-base-v0.1
内部cool-app-1
需要在发布cool-app-base-v0.2
时更新?好问题。这就是我的想法。如果我调整cool-app-base
,我可以更新cool-app-1
以使用这些酷的新功能。这听起来像是一个打破变化,以级联成衍生产品的配方,但让我们假设对基础的调整将足够小,不必担心这一点。例如,可能只有优化或依赖项版本更新才算作非破坏性更改。@JIM01我仍然认为子模块是最简单的方法。将其作为子模块并不意味着您必须拉取更新-您指向cool app base文件夹的子模块如果需要,可以永远保持在某个版本,或者可以分支-但在任何情况下,从主分支进行“拉取”都将很容易,因为共享历史。一旦你翻阅了你所看到的历史