我有一个具有以下目录结构的主分支
templates/something.lib
templates/libs/1.lib
我还有一个templates_master分支,其中包含以下文件(位于根目录中)
a.html
b.html
然后我去掌握并将模板加载到主模板文件夹
git read-tree --prefix=templates/ -u templates_master
现在导致这个主结构
templates/something.lib
templates/libs/1.lib
templates/a.html
templates/b.html
然后我继续掌握并在模板中引入一些更改/ a.html进行多次提交。现在我希望这个修改过的templates / a.html重新回到原来的分支。我切换到templates_master分支并运行此命令
git merge -s subtree master
然而,这个命令不仅将master:templates / a.html复制到templates_master:a.html而且还复制了这些libs文件,所以基本上现在我的templates_master分支拥有原始主模板/拥有的所有东西。是否有可能告诉git仅在主分支中保留某些文件和文件夹,或者这个逻辑在git级别上是硬编码的,即在子目录合并期间它使用树状指向模板/并且模板中的所有内容都是,并且只能是子项of templates /?
答案 0 :(得分:0)
不幸的是,我很确定这是子树工作流程的要求。它们毕竟被称为"子树"。您不能在子树的任何路径中拥有超级项目文件。
那说,这出现了很多!我想知道是否有人会想到解决方案。
想象一下,如果你可以将2个项目合并到同一个文件夹中?你会如何处理像README这样的常见文件?如果添加新文件,您会期望什么; git怎么知道你将它添加到哪个项目?几乎需要一个类似于perforce中的clientspec映射的新概念来满足这些需求。
现在尝试将子项目保留在 子文件夹 。