从 github 中删除子项目提交

Removing subproject commit from github

我有两个存储库,即 AB。我错误地在我的机器上将 repo B 克隆到 A 中。我从 repo B 中删除了所有代码,但是当我从源 A 推送并合并我的代码时,它还在 Github repo.

上显示了一个子项目提交 B

我想从 origin 上的 master 中删除子项目提交。这些步骤有效吗?

1. rmdir B (on my local repo A) 2. Pushing my repo A to origin 3. Merging

由于 GitHub 将 B 显示为 A 存储库中的灰色文件夹,这意味着 B 已作为子模块添加到 A。
那个灰色文件夹是 gitlink, a special entry in the index.

参见“How do I remove a Git submodule?”:
在本地,执行 git submodule deinit asubmodulegit rm BB 没有任何尾部斜线 B/)。
然后推到GitHub,B应该就没了。

假设你想删除差异中显示的提交,如

-Subproject commit <old commit hash>
+Subproject commit <new commit hash>

转到子模块目录,然后

git checkout <old commit hash>

return回到主项目:

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