Git submodule

2020-08-16 17:21:11
共230字 预计阅读1分钟

父项目不会记录子项目文件变动 只记录子项目当前commit id

克隆含有子模块项目

  • clone父项目 初始化submodule 更新submodule
    1
    2
    3
    4
    5
    6
    7
    8
    9
    git clone <repository> project
    cd project
    git submodule init
    git submodule update

    # git submodule init和git submodule update的组合
    git submodule update --init
    # 初始化并克隆嵌套子模块
    git submodule update --init --recursive
  • 递归克隆 git clone <repository> --recursive

添加子模块

git submodule add <URL> <path>

删除子模块

  1. 删除子项目目录
  2. 删除.gitsubmodule中相关部分
  3. 删除.git/config中相关部分
  4. 删除.git/modules中相关部分
    1
    2
    3
    4
    5
    6
    7
    rm -rf module
    vi .gitmodules
    vi .git/config
    rm -rf .git/modules

    # 删除子模块目录后自动删除'.gitmodules'中相关部分
    git rm module
    执行完成后 再执行添加子模块命令 如若报错'leetcode' already exists in the index
    则执行 git add . 原因是已删除文件未添加到暂存区

    更新子模块

    git submodule update