2011-07-27 31 views
4

我错误地将数百个提交从我本地回购到新创建的github回购。 如何清理/删除远程仓库中的所有这些提交,以便github仓库在开始时是干净的?我也想在这些行动上失去历史。 我想这样做,而不会影响我的本地回购。如何从远程github回购清理所有提交

我无法删除分支,因为它是github主分支。

+3

如果你正在寻找完全复位的历史,为什么不只是删除回购并重新创建它? –

+0

如果这是一个新的回购,你总是可以删除它,并再次推出适当的提交。 – Clueless

+0

好,是的。删除它并重新创建它就是我最终的结果。我只是觉得有一些聪明的方法来清理它。 – Martin

回答

10

,你可以:

- git clone <your github repo> 
- git reset --hard <an_older_commit> (where you didn't have those huge files) 
- git push --force origin master 

这样:

  • 您最初当地回购不受影响(你可以为了不再次推那些文件解决它)
  • 您的远程(GitHub)仓库不会再看到那些提交大量文件的提交。
  • GitHub将定期运行一个git gc,完全清理未引用的文件。

然而OP Martin提到:

哪能前第一承诺永远做reset --hard的位置?
即我想获得回购空不回滚到以前提交

在这种情况下,创建一个新的本地回购,使第一小提交,并push --force犯下。
更一般地说,我总是试图在创建回购时在master分支上初始提交小型,以便能够返回最小提交或启动新分支(对于不相关的开发工作)来自所述最小提交。

+0

我该如何重置-hard到第一次提交前的位置 – Martin

+0

即我想让repo为空而不是回滚到前次提交 – Martin

+0

@Martin:我有编辑答案来解决你的观点。 – VonC

2
git push -f REMOTE COMMIT:BRANCH 

例如,要强制分支master在远程origin有撤销,直至与ID 123456提交你应该做

git push -f origin 123456:master 
相关问题