使用Clion新建C++项目JetbrainsGitSubmodules,并enable git, 提交一个first commit, 作为一个父的测试工程.

    1. // 本地文件夹之间克隆测试
    2. // 注意:
    3. // 1、DestinationRepository目录必须没有在文件系统上创建,或创建了但里面为空,不然会克隆不成功。
    4. // 2、与从远程拉取仓库不同,路径的最后不用写.git来表明这是一个仓库
    5. git clone f:/work/Code/Clion/JetbrainsGitSubmodules ./abc

    同样,新建一个C++项目:Submodule,也启用git并提交。
    在主工程下执行命令:

    1. git submodule add f:/work/Code/Clion/test/Submodule
    2. -->
    3. Cloning into 'F:/work/Code/CLion/JetbrainsGitSubmodules/Submodule'...
    4. done.

    克隆成功.
    克隆后, 主工程提交, 出现新文件: .gitmodules, Submodule文件夹, 其中有代码, 提交.
    此时, 再本地克隆.

    1. git clone f:/work/Code/Clion/JetbrainsGitSubmodules ./abc
    2. >F:\work\Code\CLion\test\abc>ls -a
    3. . .. .git .gitignore .gitmodules CMakeLists.txt Submodule main.cpp
    4. >F:\work\Code\CLion\test\abc>ls Submodule -al
    5. total 4
    6. drwxr-xr-x 1 richard 197610 0 Nov 13 19:28 .
    7. drwxr-xr-x 1 richard 197610 0 Nov 13 19:28 ..

    可以看到, 克隆出一个空的Submodule文件夹,

    1. F:\work\Code\CLion\test\abc>git submodule init
    2. Submodule 'Submodule' (f:/work/Code/Clion/test/Submodule) registered for path 'Submodule'
    3. F:\work\Code\CLion\test\abc>git submodule update
    4. Cloning into 'F:/work/Code/CLion/test/abc/Submodule'...
    5. done.
    6. Submodule path 'Submodule': checked out '1197169c3e9a8fb5f58daa112686b6989a1978ad'
    7. F:\work\Code\CLion\test\abc>ls Submodule -al
    8. total 12
    9. drwxr-xr-x 1 richard 197610 0 Nov 13 19:33 .
    10. drwxr-xr-x 1 richard 197610 0 Nov 13 19:28 ..
    11. -rw-r--r-- 1 richard 197610 34 Nov 13 19:33 .git
    12. -rw-r--r-- 1 richard 197610 26 Nov 13 19:33 .gitignore
    13. -rw-r--r-- 1 richard 197610 124 Nov 13 19:33 CMakeLists.txt
    14. -rw-r--r-- 1 richard 197610 112 Nov 13 19:33 main.cpp

    在主工程根目录执行 git submodule update, 子工程文件夹会自动clone到本地.