如何删除子模块的远程分支(Git)

时间:2018-09-21 15:17:46

标签: git git-branch git-submodules

在名为Repo的Git存储库中,有4个子模块:

git config --file .gitmodules --name-only --get-regexp path

submodule.A/lib1
submodule.A/lib2 
submodule.lib3 
submodule.lib4

Prototype子模块上有一个叫做lib1远程分支,不再需要:

git submodule foreach 'git branch -a | grep -i prototype || true'

Entering 'path-to-lib1/lib1'
  remotes/origin/FeatureA
  remotes/origin/Prototype
Entering 'path-to-lib2/lib2'
  remotes/origin/FeatureB
Entering 'path-to-lib3/lib3'
Entering 'path-to-lib4/lib4'
  remotes/origin/FeatureC

如何从Prototype子模块中删除lib1远程分支?

我尝试了以下操作:

git push origin --delete Prototype

git push origin --delete origin/Prototype

git push origin --delete remotes/origin/Prototype

以上所有3条命令均显示错误:

error: unable to delete 'Prototype': remote ref does not exist 
error: failed to push some refs to 'repo-path'

我试图理解子模块的主题,但我偶然发现了这个问题,在进行一些在线搜索后,我找不到该问题的答案。

任何带有一些解释的命令/建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

将目录更改为子模块,然后更改为git push --delete origin Prototype

答案 1 :(得分:1)

您将子模块中的分支作为独立的存储库而不是超级项目删除:

cd path-to-lib1/lib1
git branch -d Prototype
git push origin --delete Prototype
cd ../..  # back to superproject