9

我在我的 git repo 上设置了一个遥控器时犯了一个错误,并从一个完全不同的项目中获取。

幸运的是,没有合并,但我现在有 2 个项目的历史在我的仓库中浮动,我试图弄清楚如何让我的仓库恢复到我进行错误提取之前的状态。

我一直在阅读有关reflog,和其他试图解决的命令rebasegc这将帮助我摆脱我不小心获取的东西,但到目前为止还没有任何地方。

看起来我的回购中有两个项目的历史,但它们是完全独立的。基本上有 2 个独立的提交树彼此并行运行,事实上,这是我在gitk查看所有分支时看到的:

在此处输入图像描述

可以看到中间的commits和history的开头和结尾的commits没有关联。在日期方面,它们是交错的,但gitk由于某种原因没有显示它们是交错的。

孤立的提交(在图片中间)是我试图摆脱的那些,它们似乎没有附加到任何分支。我的 repo 中的任何 HEAD 都没有返回到这组提交的路线。

到目前为止,我已经尝试过(以防万一它有所作为):

git remote prune
git prune
git gc
git gc --aggressive --prune=tomorrow
git remote update --prune
git fetch --all

但目前还没有任何帮助。谁能建议我如何从我的仓库中删除这些提交?

4

1 回答 1

12

您只0.1.something需要something使用git tag -d 0.1.something. 完成此操作后,提交将是 gc-able。

只要有一个标签到达一个提交,这个提交就被认为是可达的,因此将“永远”持续存在,它实际上不受垃圾收集的影响,直到你删除任何指向它的引用(分支、标签、其他引用、. ..)

于 2012-08-23T14:32:52.730 回答