Git Submodule的使用小技巧

在使用vim-pathogen来管理vim插件的时候,使用到了gitsubmodule方式来往bundle文件夹中添加插件。下面就来介绍下submodule的使用方法。

添加submodule

使用git submodule add [repository url] [放置的目录]把submodule给弄到本地

1
git submodule add git-url path/to/folder

这时会多出一个叫.gitmodules文件,里面记载的就是submodule的remote url目录地址

然后通过下面两个命令得到最新的submodule的代码

1
2
git submodule init
git submodule update

更新submodule

首先进入submodule所在目录,然后运行

1
git pull origin master

当有大量submodule需要更新的时候,一个一个进入目录显然不是好方法,我们可以通过下面的命令一次性更新多个submodule

1
2
3
git submodule foreach 'git pull origin master'
#或者用这个命令也行
#git submodule foreach 'git checkout master; git pull'

然后更新submodule

1
git submodule update

删除submodule

如果不想要某个submodule的话,相对添加操作来说,稍微多那么几个步骤。。。

1). 删除submodule所在目录

1
2
git rm --cached [submodule目录]
rm -rf [submodule目录]

2). 删除.gitmodules中该submodule的内容

3). 删除.git/config 中该submodule的内容

4). 提交修改

1
2
git add .gitmodules
git commit -m "Remove submodule [submodule_name]"

是不是感觉有些麻烦,其实也有高级做法来着,只需要你这么做

1
2
3
4
5
6
7
8
9
10
11
#删除submodule
git rm --cached [submodule目录]
rm -rf [submodule目录]

#删除有关submodule的内容
git config -f .git/config --remove-section submodule.[submodule目录]
git config -f .gitmodules --remove-section submodule.[submodule目录]

#提交修改
git add .gitmodules
git commit -m "Remove submodule [submodule_name]"

It’s work.

via