从GitHub中删除子项目提交

7

我有两个代码仓库,分别为 AB。我不小心在本地将仓库 B 克隆到了 A 中。我已经删除了仓库 B 的所有代码,但当我从 A 推送并合并我的代码到远程仓库时,Github 仓库上也显示了一个子项目提交 B

我想从我的远程主分支中删除这个子项目提交,以下步骤可行吗?

1. 在我的本地仓库 A 中删除 B 2. 将我的仓库 A 推送到远程仓库 3. 合并


它是否显示为B,如https://dev59.com/HGIk5IYBdhLWcg3wG6w6#19585206中所示? - VonC
是的,完全一样。 - Hellboy
2个回答

15
自从GitHub将B显示为A repo中的灰色文件夹,这意味着B已作为子模块添加到A中。
那个灰色文件夹是一个gitlink,是索引中的特殊条目
参见 "如何删除Git子模块?":
在本地执行git submodule deinit asubmodulegit rm BB没有任何尾随斜杠B/)。
然后推送到GitHub,B就会消失。

但我已经在本地的“A”仓库中执行了rmdir B操作。然后进行git diff操作后,它显示如下内容: @@ -1 +0,0 @@ -子项目提交哈希值 - Hellboy
你是否也执行了 git submodule deinit B 命令?或者至少执行了 git rm .gitmodules 命令?然后将 A 推送到 origin/A - VonC
不,没有这些。我只是执行了cd A/和rmdir B命令。 - Hellboy
1
@Hellboy 我的意思是:B 被声明为子模块:你需要执行一些 git 命令来注销 B 作为子模块,否则它将在 GitHub 上显示为子模块。具体来说,你需要删除 gitlink(git rm B),并且需要从子模块列表中注销它(git submodule deinit B)。像 rmdir 这样的简单系统命令不足以将 B 移除为子模块。 - VonC

6
假设您希望移除在差异中显示的提交,例如:
-Subproject commit <old commit hash>
+Subproject commit <new commit hash>

进入子模块目录,然后执行以下操作

git checkout <old commit hash>

回到主项目:

git add .
git commit --amend --no-edit
git push

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接