【问题标题】:How to delete branch with all commits pushed to wrong repository?如何删除所有提交推送到错误存储库的分支?
【发布时间】:2011-03-01 12:54:06
【问题描述】:

我们有几个用于 Android 项目的 git 存储库。我们有很小的“boot”repo和很大的“android”。在开发过程中,我们的一个人将分支从“android”推送到“boot”,现在启动存储库大小为 700 MB!无论如何,现在是否可以从“启动”中完全删除错误的分支以及与之相关的所有提交?

我尝试了 filter-branch 和其他方法,但其中大多数更改了错误推送后的提交编号

理论上这不应该是一个问题,删除“在一边”的提交。该分支从未合并到“master”,并且这些提交不是任何有用提交的父级

【问题讨论】:

    标签: git commit history


    【解决方案1】:

    使用git push从远程服务器删除分支

    git push --delete boot branchname
    

    在此之后,每个人都可以在他们的本地 repo 上运行以下命令来删除已删除的分支。

    git remote prune boot
    

    不过,删除分支后,默认情况下,数据仍会在每个存储库中保留 2-4 周,以防止意外数据丢失。如果磁盘空间问题对您来说真的很重要,那么可以尽快将其删除,但请注意,这将删除所有暂时保留的无法访问的对象,以防止意外数据丢失。

    git gc --aggressive --prune=now
    

    【讨论】:

      【解决方案2】:

      删除分支由

      git branch -D branch_name
      

      注意大写 -D 选项:这告诉 git 删除分支,即使它没有完全合并到 master 中。

      之后,使用git gc 启动垃圾收集器。那你应该没事吧。

      【讨论】:

      • 分支本身只是一个提交的名称。 (磁盘上 40 字节)和删除分支不能解决 m 问题。由错误推送创建的对象仍然在存储库中被大量推送到存储库的提交引用,因此 GC 也无济于事
      • 这不是原始问题的答案。原提交的数据依然存在。
      猜你喜欢
      • 2012-08-31
      • 2023-04-06
      • 2014-03-14
      • 2018-11-29
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多