【问题标题】:Removing subproject commit from github从 github 中删除子项目提交
【发布时间】:2015-07-28 08:00:32
【问题描述】:

我有两个存储库,即AB。错误地我在我的机器上克隆了 A 里面的 repo B。我从存储库 B 中删除了所有代码,但是当我从源 A 推送并合并我的代码时,它还在 Github 存储库上显示了一个子项目提交 B

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

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

【问题讨论】:

标签: git github git-commit subproject


【解决方案1】:

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

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

【讨论】:

  • 但是我已经在我的本地 'A' repo 上做了 rmdir B。并且在做了 git diff 之后,它显示:@@ -1 +0,0 @@ -Subproject commit hash_val
  • 你也做过git submodule deinit B吗?或者至少是git rm .gitmodules?然后将A 推送到origin/A
  • 不,这些都不是。我刚刚做了 cd A/ 和 rmdir B。
  • @Hellboy 我的意思是:B 被声明为子模块:您需要执行一些 git 命令将 B 取消注册为子模块,否则它将在 GitHub 上显示为这样。具体来说,您需要删除 gitlink (git rm B),并需要从子模块列表 (git submodule deinit B) 中注销它。像rmdir 这样的简单系统命令不足以将 B 作为子模块删除。
【解决方案2】:

假设你想删除 diff 中显示的提交

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

转到子模块目录,然后

git checkout <old commit hash>

返回主项目:

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

【讨论】:

    猜你喜欢
    • 2012-09-02
    • 2012-06-04
    • 2015-07-18
    • 2019-11-02
    • 2011-10-26
    • 2023-01-22
    • 2018-11-28
    • 2020-07-15
    • 2014-07-07
    相关资源
    最近更新 更多