更新 git 资料夹下的所有子模组
开始使用 Git 子模组(Submodule)管理文件版本,更新 git 资料夹下的所有子模组
1.建立子模组 repository
例如在 github 建立一个 KJModule 的子模组,建立完后一定要做一次 commit,这样才可以顺利的将子模组加入进去到其他专案
git@github.com:kejyun/KJModule.git
2.加入子模组
git submodule add <repository> [<path>]
git submodule add git@github.com:kejyun/KJModule.git ./app/KJModule
指定需要加入的子模组 Repository 以及子模组需要放到专案的哪个路径中
1.取得资源库
git clone git@github.com:kejyun/KJ.git
2.初始化子模组并更新
git submodule init
git submodule update
在 git 子目录有 .gitmodules
档案,如果模组路径要删除或变更,需要修改此档案
[submodule "app/KeJyunModule"]
path = app/KeJyunModule
url = git@github.com:kejyun/KeJyunModule.git
[submodule "app/KeJyunGroupModule"]
path = app/KeJyunGroupModule
url = git@github.com:kejyun/KeJyunGroupModule.git
在隐藏目录 .git
中,找到你要变更的模组目录的设定档案
.git/modules/<模组路径>/config
vim ~/KeJyunProject/.git/modules/app/KeJyunModule/config
在 config 设定档变更 [remote"origin"]
的 url
去变更子模组的路径
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
worktree = ../../../../app/KeJyunModule
[remote "origin"]
url = git@github.com:kejyun/KeJyunModule.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
使用 clone 指令时可以加入 --recursive
参数,直接抓取该 repository 的所有子资料夹
git clone --recursive git@github.com:kejyun/KJ.git
git 专案可以使用各种子模组去管理专案,但若子模组也有载入子模组的话,会需要依序地进去各个子模组将模组的子子模组抓下来,这样会造成很大的困扰,所以可以使用下列指令一次就将所有的子模组皆载入下来
git submodule update --init --recursive
因为子模组也可能会有自己的子模组,如果互相引用的话在抓取专案可能会造成 递迴
的状况,导致专案 无穷迴圈永远抓不完
所以在规划子模组至专案是,记得要规范好不同模组之间的依赖关係,小心 不要造成递迴子模组载入 的状况
- 複杂的 Repositoy
- 独立的元件 Repository Submodule
- 独立的 Helper Method Repositoy Submodule
开始使用 Git 子模组(Submodule)管理文件版本,更新 git 资料夹下的所有子模组
开始使用 Git 子模组(Submodule)管理文件版本,删除子模组