删除/重置远程主 Git 存储库

Posted

技术标签:

【中文标题】删除/重置远程主 Git 存储库【英文标题】:Delete/reset a remote master Git repo 【发布时间】:2013-05-11 15:29:08 【问题描述】:

我们有一个 Assembla 远程仓库。 Assembla 现在不提供免费的私人回购,所以我们想重新使用我们的旧回购之一。该 repo 有一个 master 分支和很多文件/提交。

我们怎样才能摆脱一切,包括所有文件和历史,让我们重新开始一个新项目?

首先,我有一个最新的 repo 拉取。

我因此尝试删除远程主分支:

git push origin :master.

这给出了错误:

remote: error: 默认情况下,拒绝删除当前分支,因为下一个 remote: error: 'git clone' 不会导致任何文件被检出,导致混乱。

所以我尝试创建一个新分支,推送它,然后从另一个分支删除 master,因此:

git checkout -b tempy
git push origin tempy
git push origin :master

我得到同样的错误。

我可以切换回master,在本地删除所有文件,然后提交并推送,但他留下了很多不需要的历史记录。

有什么想法吗?

【问题讨论】:

【参考方案1】:

最简单的答案是删除/删除您当前的项目并开始一个新项目

或者唯一的其他方法是 force 推送

rm -rf .git
git init
git add .
git commit -m "Initial commit"
git remote add origin <your-assembla-git-url>
git push -u --force origin master

【讨论】:

按项目,你的意思是回购吗?我不能删除 repo,因为 assmebla.com 不允许你再创建新的(很好,但只有 2 个用户)。我只需要一种删除文件和理想历史的方法。通常可以删除远程分支,所以我认为我可以删除主分支,但似乎不允许这样做。 @JohnLittle 我已经更新了我的答案,这将删除您的历史记录并在那里推送一个空白。 嗨,奥利弗,尝试了你的解决方案。尝试推送时,显示“远程错误:拒绝非快进 refs/heads/master(您应该先拉)...![远程拒绝] master -> master (non-fast-forward) error: failed to将一些参考推送到 'git@... 任何建议表示赞赏... 哈哈,有效! assembla.com 中有一个设置是“允许 --force push”。勾选了这个,它起作用了!回到一个裸仓库。奥利弗是 git 上帝。我正在写这个食谱!【参考方案2】:
git checkout master
git reset --hard <commit> # where commit is SHA of first commit in history
git push origin master

或从本地 repo 中完全删除 .git 并重做 git init,请参阅 https://***.com/a/16502899/368552

【讨论】:

以上是关于删除/重置远程主 Git 存储库的主要内容,如果未能解决你的问题,请参考以下文章

删除 GIT 存储库的远程密码 [重复]

删除不再在远程存储库上的本地 git 标签

删除远程git存储库中的标记

从远程 Git 存储库中完全删除提交

删除远程 git 存储库中的合并和提交

如何将 git 存储库回滚到特定提交?