我们使用GIT来管理我们的项目。
每个项目都有一个“核心”(就像我们构建项目的框架一样)所以每个项目至少有2个远程分支:
我们也有模块。每个模块都有一个包含基本功能的核心,我们为每个客户端的每个模块建立个体化。
如果我想在子模块中添加一些必须仅在1个特定客户端项目中使用的新文件,GIT如何帮助我?
由于文件是针对主项目的个性化,最好的情况是提交客户项目分支中子模块中包含的一些文件,但看起来我不能,因为每个子模块都是独立的。
Ps。:我们使用SmartGit。
答案 0 :(得分:1)
这是您可以使用git-subtree(合并)
的方案如果您对另一个进行了更改 在您的存储库中的项目,他们可能 想要从您的项目合并。这个 可以使用子树 - 它可以 向上移动树中的路径 然后他们只能合并相关的 树的一部分。
http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html
子树合并的想法是这样的 你有两个项目,其中一个 projects映射到的子目录 另一个,反之亦然。当你 指定子树合并,Git很聪明 足以弄明白一个是一个 另一个子树并合并 恰当 - 这真是太神奇了。
http://progit.org/book/ch6-7.html
但我想你想要使用子模块而不是远离它。
答案 1 :(得分:0)
我不能因为每个子模块都是独立的。
虽然子模块是“独立的”,但由于它有自己的一组提交和分支作为单独的存储库,您仍然可以在所述子模块上定义客户端项目分支。
该分支将在您的主客户端项目仓库以及核心子模块中定义,以便隔离特定于两个仓库中完成的客户项目的更改。
当您推回核心子模块中完成的更改时,将它们推送到客户端项目分支中,该分支的名称与客户端父级仓库中使用的客户端分支的名称相匹配。
简而言之,命名约定可以帮助您隔离在许多客户端项目存储库使用和共享的核心子模块中完成的小的特定更改。