【问题标题】:Git clear remote repositoryGit清除远程仓库
【发布时间】:2011-09-17 00:07:12
【问题描述】:

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

从服务器中完全删除它很重要,这样它就不会占用磁盘空间。

例如今天我推送了一个包含 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'

【问题讨论】:

    标签: git


    【解决方案1】:

    您可以使用git push -f 强制推送“正确”的存储库。根据主机的不同,运行git gc 时将清理松散的对象。 更新:根据this,您不能在汇编中强制使用git gc

    如果您希望立即清理它们并且汇编不允许您强制git gc,另一种选择是删除回购并推送一个新的。

    另外,正如 Ryan 在 cmets 中所说,一定要让每个人都知道可能已经克隆了 repo,你重写了历史。

    【讨论】:

    • +1,但 1) 确保垃圾收集定期运行,因为孤立对象在符合条件之前不会被清理,2) 确保每个人都知道您正在重写历史。
    • 如果可以的话,强制删除远程主分支git push origin :master。一些远程存储库配置不允许这样做。
    • “删除仓库”到底是什么意思?是否有一个特殊的命令,或者你只是想通过汇编网页来做到这一点?
    • @gisek 可以,通过assembla的界面删除。
    • 嗯,看起来 'git push -f' 不起作用。问题中添加了详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2013-09-22
    • 2016-11-12
    • 2017-04-15
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多