0


如何使用git submodule:添加、查看、更新、修改、删除、克隆含submodule的项目

作用

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:用于递归地初始化和更新项目/子模块中的子模块。如果项目/子模块中存在其他子模块,这个选项将确保所有子模块都被正确地初始化和更新。

更新submodule别名配置

用于更新项目中已存在的子模块,可在

.bashrc

.zshrc

/etc/profile

中按需增加下述别名配置

alias GSU="git submodule update --init --recursive"
  • --init:指示 Git 初始化未初始化的子模块。如果子模块尚未初始化,它将被初始化并配置为跟踪指定的远程仓库。
  • --recursive:用于递归地初始化和更新子模块中的子模块。如果子模块中存在其他子模块,这个选项将确保所有子模块都被正确地初始化和更新。
标签: git gitlab

本文转载自: https://blog.csdn.net/saxon_li/article/details/133779126
版权归原作者 棱角码农 所有, 如有侵权,请联系我们删除。

“如何使用git submodule:添加、查看、更新、修改、删除、克隆含submodule的项目”的评论:

还没有评论