我们使用git来管理我们的项目。

每个项目都有一个“核心”(就像我们将构建项目的框架一样),因此每个项目至少有2个远程分支:

  • 1个核心框架的存储库。
  • 每个客户端项目1个存储库。

我们也有模块。每个模块都有一个包含基本功能的核心,我们从该基础上为每个客户端对每个模块进行性格化。

  • 因此,我们有每个客户端项目中包含的子模型
  • 但是我不知道如何处理子模型的人格化部分。

如果我想在一个仅在1个特定客户端项目中使用的子模型中添加一些新文件,该如何帮助我?

由于thoses文件是针对主要项目的人格化的,最好的情况是提交客户端项目分支中的子模块内包含的一些文件,但是看来我不能因为每个子模块都是独立的。

PS。:我们使用SmartGit。

有帮助吗?

解决方案

这是您可以使用git-subtree(合并)的场景

如果您更改存储库中的另一个项目,他们可能想从您的项目中合并。使用子树是可能的 - 它可以移动树上的路径,然后它们只能合并树的相关部分。

http://www.kernel.org/pub/software/scm/git/docs/howto/howto/using-merge-subtree.html

子树合并的想法是,您有两个项目,其中一个项目映射到另一个项目的子目录,反之亦然。当您指定子树合并时,git足够聪明,可以弄清楚一个是另一个子树,并适当合并 - 这真是太神奇了。

http://progit.org/book/ch6-7.html

但是我想您想使用子模型,而不是远离它。

其他提示

我不能因为每个子模块都是独立的。

虽然这是一个suppoule是“独立的”,因为它具有自己的一组提交和分支作为单个存储库,但您仍然可以在所述子模块上定义客户端项目分支。

该分支将在您的主要客户端项目存储库以及核心子模块中定义,以隔离对两个存储库中的客户端项目的特定更改。
当您推迟在核心子模块中完成的更改时,您将其推入客户端项目分支,其名称与客户端父寄存器中使用的客户端分支的名称匹配。

因此,简而言之,命名约定可以帮助您隔离许多客户端项目库中使用和共享的核心子模块中进行的小特定更改。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top