如何使用`--allow-unrelated-histories`永久删除git中的分支

时间:2018-03-08 22:37:42

标签: git git-merge

我的问题: 我意外地将master分支从git存储库(让我们称之为repo1)合并到另一个git存储库(让我们称之为repo2)使用--allow-unrelated-histories标志。

我能够恢复原始的repo2 master分支,但我在repo1 repo2中有大约300个独立提交。

有可能以某种方式删除它们吗?

1 个答案:

答案 0 :(得分:1)

让一些其他存储库的提交在您自己的存储库中挥之不去,没有任何根本性的错误,但如果您想要摆脱它们,您必须做两件事:

  1. 删除找到名称。随着名称的消失,你再也不会看到了。

    这部分通常非常简单:如果您添加了git remote add的遥控器不正确,只需在同一个遥控器上运行git remote remove即可。这将删除所有远程跟踪名称。

    如果不考虑磁盘空间等,您可以在这里停止。

  2. 实际上强制执行垃圾收集,通常是在从其他存储库中删除任何隐藏(通常不可见)的提交名称之后。

    这涉及清除可能引用其他存储库的任何reflog条目。最简单的方法是清除所有reflog,尽管这意味着抛弃所有安全记忆。如果您知道自己在做什么,可以使用git reflog delete单独丢弃特定的reflog条目;有关详细信息,请参阅the documentation

    一旦隐藏的名称消失,简单的git gc将丢弃额外的对象。

  3. 您可以等待一个月左右而不是尝试第2步; 30天后,默认情况下,这些reflog条目会自行过期。