【问题标题】:Delete/reset a remote master Git repo删除/重置远程主 Git 存储库
【发布时间】: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,在本地删除所有文件,然后提交并推送,但他留下了很多不需要的历史记录。

有什么想法吗?

【问题讨论】:

    标签: git


    【解决方案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://stackoverflow.com/a/16502899/368552

    【讨论】:

      猜你喜欢
      • 2012-11-28
      • 2011-01-01
      • 2018-07-27
      • 2013-02-21
      • 1970-01-01
      • 2017-08-15
      • 2013-02-10
      • 2014-11-19
      相关资源
      最近更新 更多