submodule

git submodules

更新 submodule

  • 自动初始化并更新仓库中的每一个子模块, 包括可能存在的嵌套子模块。

    1. 方式1

      1
      git clone --recurse-submodules https://github.com/realwujing/linux-learning.git

    2. 方式2

      1
      2
      git clone https://github.com/realwujing/linux-learning.git
      git submodule update --init --recursive

  • 递归地抓取子模块的更改并更新当前仓库中的每一个子模块, 包括可能存在的嵌套子模块。

    1. 方式1

      1
      git pull --recurse-submodules

    2. 方式2

      1
      2
      git pull
      git submodule update --init --recursive

推送 submodule

  • 推送当前仓库中的每一个子模块, 包括可能存在的嵌套子模块。

    1. 方式1

      1
      git push --recurse-submodules=on-demand

    2. 方式2(方式1报错情况下使用)

      1
      git submodule foreach --recursive 'git push' && git push

更改submodule分支

  • 更改submodule分支

    1
    git config -f .gitmodules submodule.assembly.branch main

    1
    git submodule update --remote

  • 在你拉取的提交中, 可能 .gitmodules 文件中记录的子模块的 URL 发生了改变。 比如,若子模块项目改变了它的托管平台,就会发生这种情况

    1
    2
    # 将新的 URL 复制到本地配置中
    git submodule sync --recursive

    1
    2
    # 从新 URL 更新子模块
    git submodule update --init --recursive

删除 submodule

  • 删除 submodule

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 卸载子模块
    git submodule deinit [submodule_folder]
    # 如果想移除子库的本地修改,可使用--force标签
    git submodule deinit [submodule_folder] --force


    # 删除文件夹
    git rm [submodule_folder]

    # 提交代码
    git commit -m "delete submodule xxxxx"

More


submodule
https://realwujing.github.io/git/submodule/
作者
Wu Jing
发布于
2023年4月21日
许可协议