2020年04月07更新

删除子模块

1
2
3
4
5
6
# 逆初始化模块,其中{MOD_NAME}为模块目录,执行后可发现模块目录被清空,有时候需要加 -f参数
git submodule deinit {MOD_NAME}
# 删除.gitmodules中记录的模块信息(--cached选项清除.git/modules中的缓存)
git rm --cached {MOD_NAME}
# 提交更改到代码库,可观察到'.gitmodules'内容发生变更
git commit -am "Remove a submodule."

.gitmodules中子模块的url可以手动删除

2019年02月19日更新

git submodule 用于子模块的添加

使用场景,spax-launcher与spax-android许多相同的地方,一些类和工具方法可以抽取出来组成一个公共的模块
两个项目,共同使用

1.如何添加submodule

使用soursetree->仓库->添加子模块

填写仓库地址,和映射的目录即可

2.更新子模块代码和拉取代码

命令行模式

cd 到子模块目录,git checkout 子模块正常分支后,就可以正常的项目的git 操作

note:

在根目录下进行git 操作不影响子模块的代码,举个粒子:子模块代码有修改,在项目根目录git add ./ git commit 是不会把子模块的代码提交,必须cd到子模块目录下提交

3.原理猜测

每次提交/拉取子模块代码后,都会在根目录下spax-common文件中打上hash标签

1
2
-Subproject commit 5d54b025712ef8eb579cf8633d4b584f449d005c
+Subproject commit 9ca800f2911f6e86d6987ee7f0f3decf56c5f1ea
功能 命令
删除tag git push origin –delete tag
删除分支 git push origin –delete tag
推送一个空tag/branch到远程tag/branch: git push origin :
删除分支(分支和tag名一致的情况) git push origin :refs/tags/
推送所有tag git push origin –tags
重命名分支 git branch -m
推送重名后的分支 git push origin