Open yaoningvital opened 4 years ago
1、zny-boilerplate 是一个主项目,项目策划、合同管理、设计管理等是子项目。
2、主项目与子项目以 git submodule 的方式进行关联。主项目与子项目是相互独立的项目,分别有自己的Git仓库。通过 git submodule ,可以将子项目的仓库克隆到主项目中,同时还保持提交的独立。
$ mkdir <submodule-name> && cd <submodule-name> $ git init $ mkdir <filefolder-name> $ touch <file-name> $ git add . $ git commit -m "<commit-message>" $ git remote add origin <remote-repos-url> $ git push -u origin --all
$ git submodule add <submodule-repos-url> <path> $ git status $ git add . $ git commit -m "<commit-message>" $ git push
// 克隆一个含有子模块的项目 $ git clone <main-project-repos-url> // 克隆完成之后,项目中有之前添加的子模块目录(如 biz-test),不过是空的 // 初始化本地配置文件 $ git submodule init // 命令执行完成后,将看到类似下面的提示: // Submodule 'biz-test' (https://hyperv28.msdi.cn/tfs/Power5DBIM/PRP_Front/_git/biz-test) registered for path 'biz-test' // 从该项目中抓取所有数据并检出父项目中列出的合适的提交 $ git submodule update // 该命令执行完后,子目录(biz-test)是处在和之前提交时相同的状态了。
// 克隆一个含有子模块的项目 $ git clone <main-project-repos-url> // 将 git submodule init 和 git submodule update 合并成一步完成 $ git submodule update --init
// 克隆一个含有子模块的项目 $ git clone <main-project-repos-url> // 将 git submodule init 和 git submodule update 合并成一步完成,并检出任何嵌套的子模块 $ git submodule update --init --recursive
// 克隆一个含有子模块的项目 $ git clone --recurse-submodules <main-project-repos-url>
// 进入主项目中的子模块所在目录,手动抓取更新 $ git fetch // 在子模块所在目录,合并上游分支来更新本地代码 $ git merge origin/<branch-name> // 或者,进入子模块所在目录,直接用 git pull 拉取子模块的更新 $ git pull
// 在主项目根目录,执行下面的命令,Git将会进入子模块,然后抓取并更新 $ git submodule update --remote
// 进入主项目中的子模块所在目录,提交更新并推送 $ cd <submodule-dir> $ git add . $ git commit -m <commit-message> $ git push // 在子项目中,直接 git pull $ git pull
一、对项目构成的理解
1、zny-boilerplate 是一个主项目,项目策划、合同管理、设计管理等是子项目。
2、主项目与子项目以 git submodule 的方式进行关联。主项目与子项目是相互独立的项目,分别有自己的Git仓库。通过 git submodule ,可以将子项目的仓库克隆到主项目中,同时还保持提交的独立。
二、主项目与子项目关联的演示
1、准备子项目
2、在主项目中添加子项目
3、克隆含有子模块的项目
方式一
方式二
方式三
方式四
4、在主项目中拉取子项目的更新
方式一
方式二
5、主项目中更新了子模块的内容,在子项目中拉取该更新