修改 git submodule

初始

git 项目中,可以使用以下命令为项目添加submodule

1
git submodule add -b branch_name git@github.com:javasgl/xxx.git module_path

执行以上命令后,会在当前项目下生成一个.gitmodules 文件,内容如下

1
2
3
4
[submodule "module_path"]
path = module_path
url = git@github.com:javasgl/xxx.git
branch = branch_name

同时也将修改 .git/config文件

1
2
3
[submodule "module_path"]
url = git@github.com:javasgl/xxx.git
active = true

此时,执行以下命令即可从远程拉取相关代码到submodule中:

1
2
3
git submodule update --init

// 可以使用 git submodule deinit 重新初始化

执行之后,会在 .git/modules/module_path/ 下看到 submodeule相关的代码

1
2
.git/modules
└── module_path

变更

有时候,对于已经添加了submodule的项目,如果想更换 submodule 的地址,那个这就比较麻烦,目前git并没有直接提供相关命令,需要进行一系列的手工操作

简单记录如下,备查

比如,想把 submodule 的地址换为 github.com/xxx/xxx.git

  1. submodule 移除 git 版本控制

    1
    git rm module_path
  2. 移除 .git/config .gitmodules 中的配置

  3. 删除 .git/modules/下相关代码

    1
    rm .git/modules/module_path
  4. 执行之前的初始化,可以重新add新的submodule

    1
    git submodule add github.com/xxx/xxx.git xxx_path
0%