如何从远程Git存储库中删除所有内容?

时间:2012-07-18 17:19:02

标签: git version-control repository

我怎样才能完全“重新开始”原地?

如何完全消除Git远程存储库中的所有内容?我是目前唯一的客户,在我将其公之于众之前,我必须彻底清除所有以前的提交。

不重复因为......

此问题是关于如何删除历史记录,包括原始基本提交,而不删除现有存储库。我的存储库在SourceForge上,唯一的方法是销毁整个项目,这需要你提交一个项目删除请求,他们并不总是授予(特别是在我的情况下,我的项目不到90岁)天,所以他们不会批准它。)

5 个答案:

答案 0 :(得分:3)

推送(大部分)空分支

您必须在分支上至少进行一次提交才能将其推送到远程存储库。如果您根本没有头,git将无法发送任何内容到 origin 。您可以通过使用空提交创建一个空分支来解决此问题。例如:

git symbolic-ref HEAD refs/heads/empty_branch
rm .git/index
git commit --allow-empty -m 'Initialize empty branch.'
git branch -M empty_branch master
git push --force origin

完成后,当前的master和origin / master都将只包含一个无文件提交。当git执行垃圾收集时,最终将获得存储库中的底层对象。

删除所有标签

如果要删除所有本地和远程标记,可以在本地删除标记之前将一组空引用推送到远程。例如:

# Delete all tags present on the local host from the remote
# host in one push operation.
git for-each-ref --format=':%(refname)' --shell refs/tags |
    xargs git push origin

# Delete all local tags.
git tag -d $(git tag)

答案 1 :(得分:1)

ssh到服务器并在项目目录中执行rm -rf .git。如果你想再将它放在git下,请运行git init

答案 2 :(得分:1)

如果远程名称为origin并且您在远程存储库上拥有强制推送权限,则会删除远程存储库中的每个分支每个标记存储库:

REMOTE=origin

for i in .git/refs/$REMOTE/origin/*
do
    git push $REMOTE :"`basename "$i"`"
done

for i in `git tag`
do
    git push $REMOTE :refs/tags/$i
done

这是一种破坏性操作,因此请确保确实首先想要这样做。

答案 3 :(得分:0)

使用git push命令删除分支

$ git push origin:remotebranch_name

这将完全删除远程分支

答案 4 :(得分:0)

这是一种简单的方法:

  1. 创建一个空的git存储库。

    git init

  2. 进行虚拟提交:

    touch README.md git add README.md git commit -m "first commit"

  3. 引用您要覆盖的仓库:

    git remote add origin REMOTE_URL

  4. 覆盖远程git

    git push --force origin

  5. 删除现有的远程标签(一个一个)

    git push --delete origin TAG_NAME