我的问题:
我意外地将master
分支从git存储库(让我们称之为repo1
)合并到另一个git存储库(让我们称之为repo2
)使用--allow-unrelated-histories
标志。
我能够恢复原始的repo2
master
分支,但我在repo1
repo2
中有大约300个独立提交。
有可能以某种方式删除它们吗?
答案 0 :(得分:1)
让一些其他存储库的提交在您自己的存储库中挥之不去,没有任何根本性的错误,但如果您想要摆脱它们,您必须做两件事:
删除找到的名称。随着名称的消失,你再也不会看到了。
这部分通常非常简单:如果您添加了git remote add
的遥控器不正确,只需在同一个遥控器上运行git remote remove
即可。这将删除所有远程跟踪名称。
如果不考虑磁盘空间等,您可以在这里停止。
实际上强制执行垃圾收集,通常是在从其他存储库中删除任何隐藏(通常不可见)的提交名称之后。
这涉及清除可能引用其他存储库的任何reflog条目。最简单的方法是清除所有reflog,尽管这意味着抛弃所有安全记忆。如果您知道自己在做什么,可以使用git reflog delete
单独丢弃特定的reflog条目;有关详细信息,请参阅the documentation。
一旦隐藏的名称消失,简单的git gc
将丢弃额外的对象。
您可以等待一个月左右而不是尝试第2步; 30天后,默认情况下,这些reflog条目会自行过期。