Git Submodule 笔记

参考

我们这有两个项目 main_project 和 child_project

添加

1
2
3
cd main_project
git submodule init
git submodule add [GIT REPO URL] [OPTIONAL PATH NAME]
1
2
3
4
5
6
7
8
9
$ git status
En la rama master
Tu rama está actualizada con 'origin/master'.

Cambios a ser confirmados:
(usa "git reset HEAD <archivo>..." para sacar del área de stage)

nuevo archivo: .gitmodules
nuevo archivo: child_project

在 .gitModule 内容

1
2
3
[submodule "child_project"]
path = child_project
url = git@github.com:tmirun/child_project.git

更新

如果我们的项目是这样的

1
2
main_project
|- child_project

每次我们更新 child_project 的时候 也需要在 main_proejct 更新的child project 所在的 commit

克隆含有子模块的项目

方法 1

在克隆父级模块的时候用 –recursive

1
git clone http://github.com/chaconinc/MainProject --recursive

方法 2

第一克隆父级模块

1
2
3
4
git clone http://github.com/chaconinc/MainProject main_project
cd main_project
git submodule init
git submodule update

删除

参考

1
2
3
4
5
6
git submodule deinit <asubmodule>    
git rm <asubmodule>
# Note: asubmodule (no trailing slash)
# or, if you want to leave it in your working tree
git rm --cached <asubmodule>
rm -rf .git/modules/<asubmodule>