Git清除远程存储库

时间:2011-09-17 00:07:13

标签: git

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

将它从服务器中完全删除非常重要,因此它不会占用磁盘空间。

E.G。今天我推出了一个包含dll,sdfs等的整个Visual Studio项目。首先这些文件非常大,其次有些是由其他开发人员的VS修改而不能合并的。这让我有点谷歌,我发现这些文件应该被忽略。但是第一次提交已经使我的存储库变得混乱。我想删除它并释放磁盘空间。

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


更新:

我尝试了以下答案中的建议,但它不起作用: 'git push -f''git push --force''git push origin -f''git push origin --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 git@git.assembla.com:xxxxx.git
 ! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@git.assembla.com:xxxxx.git'

1 个答案:

答案 0 :(得分:10)

您可以使用git push -f强制推送“正确”的回购。根据主机的不同,运行git gc时将清除松散的对象。 更新:根据this,您无法强制git gc进行组合。

如果您希望立即清理它们并且assembla不允许您强制git gc,则另一个选项是删除仓库并推送新仓库。

此外,正如瑞恩在评论中所说,一定要让每个人都知道可能已经克隆了回购,你重写了历史。