git子模块和目录结构

时间:2013-03-10 18:00:10

标签: git

我的目录结构如下:

root/
    files
    dir1/
        main-project-files
        main-project-subdirs/
    dir2/

我有另一个存储库,我想添加到邮件项目中。它有一个类似的结构:

dir1/
    submodule-files
    submodule-subdirs/

问题是我希望主项目和外部存储库中的dir1都是同一个文件夹,但我真的不希望dir1中的文件属于要作为存储库的一部分进行跟踪的主项目。结束时总体结构如下:

root/
    files
    dir1/
        main-project-files
        main-project-subdirs/
        submodule-files
        submodule-subdirs/
    dir2/

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

您要做的是在要跟踪的目录中有一个符号链接,或者从您不想跟踪的目录中指向该符号链接。如果您不想跟踪符号链接,可以将其添加到您的gitignore。然后,Git只会查看您跟踪的目录,并且不知道symlinc指向的位置。

答案 1 :(得分:0)

Git实际上没有一个工具来构建复杂的列表,这些列表中的目录来自哪些文件来自哪些任意历史列表。我认为其背后的原因是,人类跟踪和验证列表是不必要的,容易出错,因为它描述了究竟能做什么和不能用它做什么。

只需将共享社区和历史记录中的所有内容保存在一个repo集中,并将其作为子模块克隆到其他所有使用它的子模块中。您可以获得相同的效果,其中哪些文件是哪些文件的历史记录更容易验证(更不用说描述)了。