git submodule

作者: 霁_雪 | 来源:发表于2019-08-09 23:48 被阅读0次
  • gitsubmodule有关的信息保存在两个地方:
    • .gitmodules在仓库中,有版本控制,修改之后会同步到其他仓库,使用submodule相关命令的时候会自动更新
    • .git/config在本地,需要手动更新,或者执行git submodule sync将新的配置从.gitmodules拷贝到.git/config
    • git submodule sync会将submodule远程的 url 配置设置到.gitmodules,并且只会影响.git/config已经有 url 的条目
      • 指定--recursive,将会递归更新注册的submodule
  • 应用场景
    • 场景1:添加一个submodule
      • git submodule add repo_url local_path
      • 此命令做三件事:克隆工程到本地;创建/修改 .gitmodules标记submodule的具体信息;更新.git/config文件,增加submodule的地址
    • 场景 2:删除一个submodule
      • 删除.git/config相关代码
      • 删除工程目录下的.gitmodules相关代码
      • 删除缓存的子模块git rm --cached path_to_submodule(路径最后不要加斜线)
    • 场景 3:更新submoduleurl
      • 删除.git/config相关代码
      • 删除工程目录下的.gitmodules相关代码
      • 执行git submodule sync --recursive更新到本地的配置文件
    • 场景 4:克隆一个有submodule的项目
    • git clone repo_urlsubmodule的代码不会和父项目一起克隆出来
    • git submodule update --init [--recursive]可以检出submodule的代码,recursive适用于嵌套submodule的项目
    • 场景 5:更新 submodule,域远程仓库同步
  • 问题
    • 问题 1:git submodule add时报错A git directory for xxx is found locally with remote(s): origin
      • 删除.git/config相关代码
      • 删除工程目录下的.gitmodules相关代码
      • 删除缓存的子模块`git rm --cached path_to_submodule``(路径最后不要加斜线)
      • 执行git submodule sync --recursive更新到本地的配置文件
    • 问题 2:git submodule add时报错Pathspec xxx is in submodule
      • 删除缓存的子模块git rm --cached path_to_submodule(路径最后不要加斜线)

相关文章

网友评论

    本文标题:git submodule

    本文链接:https://www.haomeiwen.com/subject/lariwftx.html