赞
踩
Git submodule 功能可以让我们在一个仓库中添加另一个仓库作为当前仓库的子仓库,这样既方便了代码管理,也免去我们重复造轮子的精力和时间。注意:Git submodules 只是某个仓库某一时刻的一个状态的引用,即某个 commit 的引用。
git submodule add https://github.com/maonx/vimwiki-assets.git submodule_filename
git submodule add -b dev git@ip:src/name.git submodule_filename
添加子模块后运行git status
, 可以看到目录有增加1个文件.gitmodules
, 这个文件用来保存子模块的信息。
git submodule
会显示如下内容
e33f854d3f51f5ebd771a68da05ad0371a3c0570 assets (heads/master)
git submodule update
在子模块中修改文件后,直接提交到远程项目分支。
- git add .
- git commit -m "commit"
- git push origin HEAD:master
删除子模块比较麻烦,需要手动删除相关的文件,否则在添加子模块时有可能出现错误,同样以删除assets
文件夹为例
git rm --cached assets rm -rf assets
然后,删除.gitmodules
文件中相关子模块信息
- [submodule "assets"]
- path = assets
- url = https://github.com/maonx/vimwiki-assets.git
接着,删除.git/config
中的相关子模块信息
- [submodule "assets"]
- url = https://github.com/maonx/vimwiki-assets.git
最后,删除.git
文件夹中的相关子模块文件
rm -rf .git/modules/assets
git clone https://github.com/maonx/vimwiki-assets.git assets --recursive
--recursive
:用于递归地初始化和更新项目/子模块中的子模块。如果项目/子模块中存在其他子模块,这个选项将确保所有子模块都被正确地初始化和更新。
用于更新项目中已存在的子模块,可在.bashrc
、.zshrc
或/etc/profile
中按需增加下述别名配置
alias GSU="git submodule update --init --recursive"
--init
:指示 Git 初始化未初始化的子模块。如果子模块尚未初始化,它将被初始化并配置为跟踪指定的远程仓库。
--recursive
:用于递归地初始化和更新子模块中的子模块。如果子模块中存在其他子模块,这个选项将确保所有子模块都被正确地初始化和更新。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。