我能否清空远程Git存储库?

9

我创建了一个新的远程git仓库,并已经将一些内容推送到其中 - 第一次测试推送和来自本地的真实代码推送。我想要从头开始,以便我可以创建几个分支(主分支 = 准备发布的代码,测试分支和为开发人员创建的分支),并按用户为它们提供不同的权限。

我能否以某种方式清空现有的远程仓库?这是一个坐落在Linux上的远程git仓库,开发者和我都在Windows上运行。


你的问题有点不清楚。你所说的“pushed something in there”是指“推送到公共远程”即发布吗?如果是这样,那么Steven Xu的答案是合理的(尽管你还应该小心删除任何已跟踪的隐藏文件),我怀疑这比完全重新开始有什么好处。其他开发人员不必重新基于此进行,但他们将与所有内容发生合并冲突。我对你的最终目标也感到困惑——你正在询问如何创建分支并将其提供给开发人员……如果你能澄清你的具体意思,我可能可以给你一个更有帮助的答案。 - Cascabel
@Jefromi:如果完全重新开始,我很高兴保留相同的存储库名称,或清空现有的远程存储库。哪个更容易....(我更新了我的问题) - Radek
1
只要你有文件系统访问权限,最好就清空目录并重新创建仓库。这样做很干净,而且不会对其他开发人员产生比完全重写更大的影响 - 无论如何,他们都必须意识到这一点。 - Cascabel
看起来这是最简单的方法 :-) 所以我删除了.git目录,就这样。 - Radek
@Jefromi:你能从你的“擦除评论”中制作一个答案吗?然后我会接受它作为答案。我这样做了,现在很开心 :-) - Radek
2个回答

7

我认为这并不是非常有用,但您可以通过以下方式重新启动主分支(忘记所有历史记录):

rm .git/index .git/refs/heads/master
echo "Hello!" > README
git add README
git commit -m "Exterminate! Exterminate!"

并将其推送到您的远程存储库。通常我会从一个空的存储库开始,添加您的远程存储库,然后从那里推送。

一些解释:第一行删除索引(因此您的下一个提交不包含任何文件)和指向主分支顶端的当前指针(因此您的下一个提交不会在以前的提交之上提交)。在第二行和第三行中,我们向新存储库添加一些内容,并在第四行提交该内容。


2
如果你想让仓库消失,只需将其删除!删除整个包含目录,并根据需要重新创建它。
是的,你也可以在你自己的端上创建一个新的仓库,然后强制推送到远程,远程删除所有引用,然后确保运行git gc...但这需要时间和精力。直接把它擦掉就好了。

在我的情况下工作得很好。将来我可能也需要其他问题中的东西.... - Radek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接