繁体   English   中英

从远程Git仓库删除或删除所有历史记录,提交和分支?

[英]Delete or remove all history, commits, and branches from a remote Git repo?

我已经阅读并尝试了很多Git命令建议和讨论,现在持续了好几天。 似乎没有简单,全面的方法来使远程Git repo完全变空 - 没有分支,没有引用,没有对象,没有文件,没有任何东西

是的, 我认识到可以删除并重新创建回购 - 如果一个人对原点有这种权限(我没有),但这不是重点。 怎么做? Git命令的哪些组合实际上会做到这一点, 让处于处女状态的repo准备接收我们希望推入它的任何东西,并且基本上没有大小(或者处女回购的最小尺寸)

不要告诉我不应该这样做,或者我们必须通知所有用户等 我知道这一切。 我只是想彻底开始

您可能想尝试使用--mirror标志 (强调我的)推送一个空的本地存储库:

 --mirror 

而不是将每个引用命名为push,指定将refs /下的所有引用(包括但不限于refs/heads/refs/remotes/refs/tags/ )镜像到远程存储库。 新创建的本地引用将被推送到远程端,本地更新的引​​用将在远程端强制更新,并且已删除的引用将从远程端删除 如果设置了remote.<remote>.mirror配置选项,则这是缺省值。

如果您的仓库在GitHub上,如果在尝试推送时将master设置为默认分支,则会出现此错误:

$ mkdir practice; cd practice;
$ git init; git remote add origin git@github.com:user/practice.git;

$ git push origin --mirror
remote: error: refusing to delete the current branch: refs/heads/master
To git@github.com:user/practice.git
 ! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to 'git@github.com:user/practice.git'

我通过初始提交然后推送来解决这个问题。

强制性警告 :当然,这将完全消除您的所有历史记录并提交您的远程回购 - 所有引用,所有分支,所有标记等。确保这实际上是您想要做的。 当然,在执行此操作之前,您始终可以制作远程仓库的备份克隆,以防您出于任何原因想要保留它。

另请注意,实际上不会立即删除任何提交。 他们只会变成悬挂的提交,这意味着他们无法从分支机构到达。 最终他们会被Git repos收集垃圾,但是如果你有权访问你的远程仓库,你可以用git gc手动启动垃圾收集。

你不能这样做。 你可以做的最好的是删除所有引用,并希望服务器运行git gc并具有没有任何引用的修剪对象的设置。 这取决于服务器配置。

通常需要14天才能通过git gc删除对象。 但是,如果您尝试克隆存储库,则不会克隆这些对象。

你已经有一个很好的答案,如何做一个“黑客”删除所有裁判。 它很有效,你的回购将会出现,因为它是“新鲜的”。 但事实并非如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM