繁体   English   中英

使用git repo作为通用基础

[英]Using git repo as a common base

假设我有一些代码构成了一些很酷的东西的基本框架。 我把它放在一个仓库中,我称之为cool-app-base

现在,我对一些很棒的应用程序有一些好主意。 我希望他们使用cool-app-base并从那里构建。 自然,我可以选择clone和孤立,以及fork和重命名等。为示例起见,假设我为自己想要的东西做了最好的事情,并创建了cool-app-1

我不打算从cool-app-1贡献 cool-app-base ,所以任何一个都可以。 但我确实希望能够将我对cool-app-base所做的任何更新都带入cool-app-1

关键是, cool-app-1不必关心cool-app-base的历史。 我想将这些更新视为压缩的提交,因此更新可以包含“使用最新的cool-app-base更新”的提交消息并完成。 这使fork吸引力降低了,但是听起来我唯一的选择是手动将cool-app-base代码更改合并到cool-app-1以便我可以控制提交历史记录。

我的问题是:我该如何做得更好/“正确”? 我确定我可以使用一些时髦的git merge选项,但是我还不很精通,因此无法自信地探索它们。

澄清: cool-app-base不是库,而是一组配置文件。 尽管可以将它们分解并单独导入,但我的目的是保持它们捆绑在一起。 我希望cool-app-base的文件形成cool-app-1的根目录,而不是嵌套在子目录中。 我要解决的实际问题是,每次我想启动一个新项目时,都不需要重新创建我的包文件,目录结构和一组经过精心构造的脚本。 如果我的配置位于子目录中,那么我仍然需要创建对它们的引用,在我认为只是更多样板代码的地方。

另外,虽然我认为该概念与语言无关,但是我正在使用JavaScriptnodenpm

我认为,您可以使用Git子模块 ,将cool-app-base用作cool-app-1的子模块。 然后cool-app-1将在物理文件资源中拥有子文件夹cool-app-base ,而这两个存储库的Git历史记录都不会受到干扰。

Git使用子模块解决了这个问题。 子模块允许您将Git存储库保留为另一个Git存储库的子目录。 这使您可以将另一个存储库克隆到您的项目中,并使提交分开进行

您没有提及您的编程语言。 但是大多数语言都带有某种程序包管理器:

  • JavaScript:npm
  • Java:Maven,Gradle
  • Python:点子

如果您有使用这种语言的程序包管理器,请在您的应用程序项目中使用它来包含您的基础项目。

如果没有,我建议使用子树而不是子模块。 您可以将基础项目包含在应用程序项目的子目录中。 这就像将一个提交的整个文件系统复制到另一个仓库中。 您可以选择是否需要历史记录( squash )。

之后,您可以使用一个命令将其更新到较新的版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM