我想得到一些建议,以获得最佳处理和版本控制项目,它们具有以下结构:
从父项目(在许多项目中共享),我需要获得给定的目录结构和文件,即
.
|-- modules/
| |-- file_1_parent.py
|
|-- controllers/
|-- file_2_parent.py
在这个父项目中,派生了几个子项依赖项,它们将文件添加到目录中。
然后情况可能如下所示(文件/目录所属的项目名称在括号中)
.
|-- modules/ (parent project)
| |-- file_1_parent.py (parent project)
| |-- file_1_child.py (child project)
|
|-- controllers/ (parent project)
|-- file_2_parent.py (parent project)
|-- file_2_child.py (child project)
具体来说,在我的情况下,父项目是web2py / django项目,我想从中导出几个子项目。
现在的问题是,
我想到了以下方法:
git submodule
或git subtrees
:这不起作用因为我从父项目需要非常严格的目录和文件结构git remotes
,即两个git origins
,一个到父项目,一个到子项目:反对这个解决方案的是,为了在某个地方部署项目,我不能简单地运行git clone
但必须手动设置多个git remote -v origin
。.gitignore
:也许是一个不是解决方案,这不是很糟糕,但我不知道实现这一目标的工具。也许有一个工具可以通过像some_paket_manager install path/to/git/repo==v.0.0.9
这样的命令从github repo安装给定的版本只需进行普通的合并,唯一需要记住的是当/如果你合并在子分支上完成的父文件的工作,删除子项目特定的文件和合并结果的更改。只要你记录你实际做的事情,Git就会把事情做好。 git diff --diff-filter=A --name-only @
将向您显示在飞行中添加的所有文件,例如由无提交合并引入的任何内容,因此执行无提交合并,修复结果以仅包括您想要的更改,提交,完成。一旦你掌握了需要做什么修正,你可以自动化很多,但它并不总是只删除每个新文件。