Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git:一个文件夹中有多个子树/子模块?_Git_Git Submodules_Git Subtree - Fatal编程技术网

Git:一个文件夹中有多个子树/子模块?

Git:一个文件夹中有多个子树/子模块?,git,git-submodules,git-subtree,Git,Git Submodules,Git Subtree,在本地计算机上,我有几个项目导入的常用脚本,例如: /common/ .git/ scripts/ common1.py /projectA/ .git/ scripts/ A1.py (imports from common1.py) /projectB/ .git/ scripts/ B1.py (imports from common1.py) 通用脚本和项目在单独的git回购中进行跟踪。这对我的个人工作很好,因为我可以克隆所有需要的回购协

在本地计算机上,我有几个项目导入的常用脚本,例如:

/common/
  .git/
  scripts/
    common1.py
/projectA/
  .git/
  scripts/
    A1.py (imports from common1.py)
/projectB/
  .git/
  scripts/
    B1.py (imports from common1.py)
通用脚本和项目在单独的git回购中进行跟踪。这对我的个人工作很好,因为我可以克隆所有需要的回购协议。当通过git公开项目时,我可以通过子树或子模块包含公共文件(对公共文件的引用在B1.py中更新):

现在我想组装一个超级项目(目标):

通过子树和子模块,我能够实现:

/projectC/
  .git/
  scripts/
    common/
      common1.py
    projectA_scripts/ (via subtree)
      A1.py
      common/ (via subtree w/in projectA)
        common1.py
    projectB_scripts/ (via subtree)
      B1.py
      common/ (via subtree w/in projectB)
        common1.py 
    C1.py 
然而,这是相当冗余的,通过sub-x链传播更改将是乏味的。如何实现上述目标目录结构,同时保留对项目和公共文件进行更新的能力?不管怎样,我不希望需要将子树/子模块更改推到上游


不需要在两个操作系统上进行独立配置的跨平台(Windows UNIX)解决方案的额外好处。基于Git的解决方案更可取。

< P>因为你不必把这些子树/子模块内容推回去,你可以考虑:

  • 通过对这些子树/子模块的每个文件进行符号链接
  • 或使用,应允许“”

有趣的方法-当然可以。我在OP中没有提到,但我希望有一个跨平台的Windows UNIX解决方案,它不需要在两个操作系统中进行独立配置(就像symlinks那样)。首选基于Git的解决方案。@水杉好吧,Windows也有符号链接;)(,需要管理权限)
/projectC/
  .git/
  scripts/
    common1.py
    A1.py
    B1.py
/projectC/
  .git/
  scripts/
    common/
      common1.py
    projectA_scripts/ (via subtree)
      A1.py
      common/ (via subtree w/in projectA)
        common1.py
    projectB_scripts/ (via subtree)
      B1.py
      common/ (via subtree w/in projectB)
        common1.py 
    C1.py