2013-06-30 56 views
1

我们的开发人员之一意外地将他的本地回购推到错误的共享回购。撤销GIT推送到错误的共享回购

我设法使用git push和force将头重置到正确的位置,以便现在可以正常工作。

但是,我一直无法摆脱错误的提交,它显示在gitk - 所有没有父母和没有孩子(即它没有连接到任何分支)的提交。

是否有办法彻底摆脱这一个(我们冻结共享回购所以没有人从上次推动拉)?

回答

0

您可以在远程存储库中运行git gc。如果提交无法从任何引用中获取,则应从存储库中删除该提交。请务必在之前进行备份。

0

这是奇怪的状态,我做了很多次这样的更正,从来没有看到这些单独的提交。 你是否在本地对repo本身运行gitk,或者一些克隆?

我推高了一些空的/不相关的提交并再次查看 - 可能小故障消失。如果没有,我会运行git fsck

此外,如果您克隆中央仓库,您是否看到克隆中的超额提交?

1

错误提交仍然存在于git仓库中,但如果我理解正确,它不会被任何其他提交(或分支)引用。

git gc将按照以前的答案已知的方式移除此提交,但它不会删除比2周更新的对象。 (为了防止你丢失数据)。

如果你确实知道你在做什么(有备份等),你可以做git gc --prune=<date>git gc的帮助状态:

“剪掉比日期更早的对象(默认为2周前,可由配置变量gc.pruneExpire覆盖)。默认情况下此选项处于打开状态。