2011-09-17 160 views
9

如果我将一个错误的初始提交(或多个)提交到远程存储库并且想要清除它/销毁它 - 我可以通过命令执行吗?Git清除远程存储库

将其从服务器完全移除非常重要,因此它不使用磁盘空间。

E.G.今天,我推出了一个完整的Visual Studio项目,包括dll,sdfs等等。首先这个文件是相当大的,其次它们中的一些被其他开发者的VS修改,并且不能被合并。这使我谷歌一点点,我发现这些文件应该被忽略。但第一次提交已经混乱了我的存储库。我想删除这个并释放磁盘空间。

它可以删除git仓库,并通过主机的网站(集会)再次添加它,但这听起来不像我的解决方案..是否有更专业的方式?


UPDATE:

我想建议从下面的答案,但它没有工作: '混帐推-f'混帐推--force'混帐推起源-f“混帐推起源--force” 导致:

$ git push --force 
Counting objects: 19, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (19/19), done. 
Writing objects: 100% (19/19), 6.85 KiB, done. 
Total 19 (delta 3), reused 0 (delta 0) 
remote: error: denying non-fast-forward refs/heads/master (you should pull fir 
) 
To [email protected]:xxxxx.git 
! [remote rejected] master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:xxxxx.git' 

回答

9

你可以强制与git push -f推动‘正确’的回购。根据主机,当运行git gc时,松散物体将被清除。 更新:根据this,您不能强制组合中的git gc

如果您希望它们立即清理干净,并且程序集不允许您强制执行git gc,则另一种方法是删除回购并推送一个新回购。另外,正如Ryan在评论中所述,一定要让所有人都知道可能已经克隆了回购,那你重写了历史。

+0

+1,但1)确保垃圾收集定期运行,因为孤立的对象不会被清理,直到他们有资格,并且2)确保每个人都知道你正在重写历史。 –

+1

如果可以,强制删除远程主分支'git push origin:master'。一些远程存储库配置不允许这样做。 – basicxman

+0

“删除回购”是什么意思?有没有特别的命令,或者你只是想通过组合网页来做到这一点? – gisek