2012-07-31 86 views
2

我有主分支下面的目录结构如何让git在子树合并期间忽略某些文件夹和文件?

templates/something.lib 
templates/libs/1.lib 

而且我也有以下文件(右根)

a.html 
b.html 

然后我去掌握并加载一个templates_master分支模板插入主模板夹

git read-tree --prefix=templates/ -u templates_master 

这导致进入该主结构现在

templates/something.lib 
templates/libs/1.lib 
templates/a.html 
templates/b.html 

然后,我留在主人身上,并在模板/ a.html中进行一些更改,进行多次提交。现在我想要这个修改过的模板/ a.html回到它的原始分支。我切换到templates_master分支并运行此命令

git merge -s subtree master 

但是这个命令不仅会将主:模板/ a.html到templates_master:a.html还会将自身复制这些文件的库所以基本上现在我templates_master分公司拥有一切原来的主模板/有。是否有可能告诉git只保留主分支中的某些文件和文件夹,或者这个逻辑是否在git级别上进行了硬编码,即在子目录合并期间,它使用树状指向模板/并且模板内部的所有内容都是并且只能是孩子模板/?

+0

是的,不幸的是樱桃挑选这里不是一个解决方案。我正在尝试构建一个自动化系统,它将采取主模板更改,将这些更改移动到单独的“主模板”分支,然后主模板将合并到主题分支中:templates_theme1,templates_theme2等。问题是产品是结构化的 - 模板/文件夹下的某些内容与模板无关,不会被用于最终的templates_theme1分支。 – Eugene 2012-07-31 14:12:06

回答

0

不幸的是,我很确定这是子树工作流程的要求。他们毕竟被称为“子树”。在子树的任何路径中不能有超级项目文件。

这就是说,这出现了很多!我想知道有人会想到一个解决方案。

想象一下,如果您可以将2个项目合并到同一文件夹中吗?你将如何处理像README这样的常见文件?如果你添加一个新文件,你会期望什么;怎么可能知道你将它添加到哪个项目?几乎需要一个类似于perforce中客户端映射的新概念来适应这种需求。

现在试着让你的子项目在子文件夹中