使用 git 为我的项目维护骨架的最佳方法

Posted

技术标签:

【中文标题】使用 git 为我的项目维护骨架的最佳方法【英文标题】:Best approach to maintain skeleton for my projects with git 【发布时间】:2011-02-11 09:31:33 【问题描述】:

几年来,我一直在寻找管理我正在从事的多个项目的方法。每一个都在某种程度上是不同的,但应用程序的核心对所有人来说都是共同的。当我在当前项目中实现一些新功能时,很难在以后的其他项目中使用它们。我必须搜索许多项目才能真正找到该功能。

然后是 git,它对改善我的项目管理有很大帮助。我创建了一个框架项目,其中实现了整个应用程序结构和核心库、工具和模块。这是我开始的每个新项目的基础。它看起来像这样:

mkdir new_project
cd new_project
git init

骨架合并时间:

git remote add skeleton git@domain:skeleton.git
git fetch skeleton
git merge skeleton/master

现在是项目调整、更改 ini 文件、添加自定义模板、模块、演示者等。现在项目过着它自己的生活。一段时间后与更新的骨架合并:

git fetch skeleton
git merge skeleton/master --no-commit

我喜欢查看从骨架到项目的所有更改,因此 --no-commit 选项。

现在我的问题来了。 维护骨架的最佳方法是什么? 在向每个以骨架为基础的项目添加新功能时,有些功能仅与当前项目相关。但是应用程序的核心有一些特性,我在下一个项目中也需要它们,因此我需要将它们合并到骨架中。

我在 git/merge 或任何其他 git 的命令中没有找到任何方法来维护骨架。因此,我手动将项目与骨架进行比较(尽管使用 meld,这是一个很棒的工具)并应用适用于骨架的更改,然后我将致力于骨架。

我尝试维护骨架以将项目添加为远程,获取项目然后合并到骨架,但是这样对项目的所有更改(仅用于项目)都将返回到骨架,这是无效的。

【问题讨论】:

【参考方案1】:

一种方法可能是在您的项目中创建一个名为skeleton-improvements 的新分支。当您在处理项目时对骨架进行改进时,请在改进分支上进行。然后,将其合并到您的主分支(或工作分支,等等):

git merge skeleton-improvements

当您想要更新骨架 repo 时,将您的项目添加为远程,获取,然后合并 skeleton-improvements 分支。

【讨论】:

在项目中创建分支,当在 master 中只有这个项目相关的提交意味着所有这些提交也都在进行骨架改进。然后在骨架与提交合并后,我希望合并所有仅与项目相关的提交。 @Edke,我不确定我是否理解您的评论,但听起来您可能会担心特定于项目的提交会被合并到框架中。我认为 Greg 不小心遗漏了一个重要细节:当你分支 skeleton-improvements 时,你不应该从任何特定于项目的提交中分支它(例如 master),而应该从“骨架”提交中分支(例如 skeleton/master ):git checkout -b skeleton-improvements skeleton/master。如果以这种方式完成,合并到“骨架”(实际上,可能是推送)不会引入特定于 probject 的提交。 嗯,这看起来很有希望,我会尝试并报告它的进展情况。在项目的 master 中获取这些提交应该是 git checkout master && git merge skeleton-improvements 这个建议的问题是,如果我在骨架项目中创建分支,它的行为相同,这意味着没有项目文件,只有骨架/master。

以上是关于使用 git 为我的项目维护骨架的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

Git:一个项目有两个远程仓库维护单独的提交

在我们的工作环境中使用GIT的最佳方法是什么? [关闭]

维护嵌套元素的分组方法 XSLT 2.0 - 分离多余的

通过 git URL 从 lerna 管理的 monorepo 安装包

在 Visual Studio 2012 中为我的 c++ 项目设置 Aquila

Git 分支管理最佳实践