对于我正在进行的项目,我们决定开发一个工具来帮助开发,所以这不应该在生产中。
所以我想知道,因为 git 太棒了,如果可能有一个功能来阻止某些文件(是的,只有文件:这是一个 Magento 项目,我们要开发的工具将在他自己的模块中,与应用程序的其余部分)要合并到 master 中,但应该在其他分支中可用。
如果有帮助,我们正在考虑使用 git-flow。所以我们会有master,我们将从它创建develop,从中创建我们所有的功能分支。我们的想法是让这个模块处于开发状态,但永远不会合并回主模块。
我现在在想,比如只在主分支中忽略那些文件(.gitignore),这样行吗?
编辑1:项目结构
我觉得我必须提供有关项目结构的更多信息,这里是:
+ main_folder/
+ magento/
|---+ app/
| |--+ code/
| | |--+ community/
| | |--+ core/
| | |--+ local/
| | |--+ Namespace1/
| | |--+ Module1/
| | |--+ Module2/
| | |--+ Namespace2/
| | |--+ Module1/
| | |--+ Module2/
| |--+ design/
| | |--+ frontend/
| | |--+ default/
| | |--+ default/
| | |--+ layout/
| | |--+ template/
| + js/
| + lib/
+ ezpublish/
开发工具模块必须包含在不同位置的主项目(仅magento部分)中,即app/code/local/ Namespace1 / Module3 /、app/design/frontend/layout/dev.xml、app/design /frontend/template/dev/tool.phtml和 js/ dev /
编辑 2:
探索@VonC答案的子模块选项,这是我所做的:
- 在分支主:
- git submodule add git@github.com:path/to/submodule.git devtool
- cd 开发工具
- git checkout 123abc #submodule 的初始提交
- 光盘..
- git 添加开发工具
- git commit -m "在初始提交时添加子模块"
- 在分支开发中:
- cd 开发工具
- git checkout abc213 #子模块的最后一次提交
- 光盘..
- git 添加开发工具
- git commit -m "子模块最后一次提交"
- 回到分支主:
- 触摸 .git 属性
- 在 .gitattributes 我放了这个:
devtool merge=ours
- 混帐添加 .gitattributes
- git commit -m ".gitattributes 指令"
但是master中的子模块具有最后一次提交的内容,如果我签出master中的初始提交并签出返回到develop,初始提交仍然存在(当我想要develop中的最后一次提交时)。
所以我显然做错了什么,但是什么?