如何从远程Git存储库中删除所有内容? 我怎样才能完全“重新开始”呢?

如何从远程Git存储库中删除所有内容? 我怎样才能完全“重新开始”呢?,git,version-control,repository,Git,Version Control,Repository,我怎样才能彻底清除Git远程存储库中的所有内容?我是目前唯一的客户,在我可以让它公开之前,我必须清除所有以前的提交 不是复制品,因为。。。 这个问题是关于如何在不删除现有存储库的情况下删除历史记录,包括原始的基本提交。我的存储库位于SourceForge上,唯一的方法是销毁整个项目,这要求您提交一个项目删除请求,但他们并不总是批准(特别是在我的情况下,我的项目不到90天,所以他们不会批准).ssh连接到服务器,并在项目目录中执行rm-rf.git。如果要将其再次置于git下,请运行git ini

我怎样才能彻底清除Git远程存储库中的所有内容?我是目前唯一的客户,在我可以让它公开之前,我必须清除所有以前的提交

不是复制品,因为。。。
这个问题是关于如何在不删除现有存储库的情况下删除历史记录,包括原始的基本提交。我的存储库位于SourceForge上,唯一的方法是销毁整个项目,这要求您提交一个项目删除请求,但他们并不总是批准(特别是在我的情况下,我的项目不到90天,所以他们不会批准).ssh连接到服务器,并在项目目录中执行
rm-rf.git
。如果要将其再次置于git下,请运行
git init

如果远程名称为
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
这是一个破坏性的操作,因此请确保您确实想首先执行此操作。

推送(大部分)空分支 为了将分支推送到远程存储库,必须在分支上至少进行一次提交。如果你根本没有脑袋,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
# 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)
完成后,当前母版和源/母版将只包含一个文件自由提交。当git执行垃圾收集时,存储库中的底层对象最终将被获取

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

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
# 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)

使用gitpush命令删除分支

$git推送源:remotebranch\u名称


这将完全删除远程分支

以下是一种简单的方法:

  • 创建一个空的git存储库

    git init

  • 进行虚拟提交:

    touch README.md
    git add README.md
    git提交-m“首次提交”

  • 引用要覆盖的回购协议:

    git-remote-add-origin-remote\u-URL

  • 覆盖远程git

    git推送——强制原点

  • 删除现有远程标记(逐个)

    git推送--删除源标签\u名称


  • @埃里克索,把它擦干净。我不想删除实际的回购协议,只想删除其内容。这可能会有所帮助,但我仍在寻找。你能消除回购协议并创建一个新的回购协议吗?@KeithThompson我不能:(我的存储库在SourceForge上,唯一的方法是销毁整个项目,这要求你提交一个项目删除请求,他们并不总是批准(特别是在我的情况下,我的项目小于90天,他们不会批准)。:(他希望擦除提交历史记录,而不仅仅是分支。如果您没有直接访问服务器的权限(例如,考虑GitHub存储库),这将是擦除提交的最接近的方法。此操作后,提交将成为孤立的(无法访问)在远程存储库中,对任何客户端都不可见。实际提交对象将在稍后服务器上发生
    git gc
    时清理。这类似于
    DELETE
    SQL命令通常不会从磁盘删除数据,但会将记录标记为已删除,随后将执行垃圾收集过程沿着并回收空间。@cdhowie
    fatal:Invalid refspec':*'
    fatal:remote端意外挂起
    @KevinOrr然后没有
    原点
    远程,或者
    原点
    远程没有任何分支。请先尝试
    git fetch origin
    。@cdhowie
    $git fetch origin
    密码:
    警告:无常见提交
    远程:计数对象:8,完成。
    远程:压缩对象:100%(8/8),完成。
    远程:总计8(增量0),重复使用0(增量0)解包对象:100%(8/8),完成。
    从ssh://git.code.sf.net/p/hangman4pygame/code
    `*[新分行]master->origin/master`
    $fori in.git/refs/$REMOTE/origin/*;git推送$REMOTE:“
    basename“$i”
    ”;完成
    密码:
    致命:无效的refspec':*'
    致命:远程端意外挂起
    OP无法执行此操作。在回答后发布的评论中,他说存储库位于SourceForge上,他无法删除它。我建议将此答案更改为仅删除所有分支。这不会强制执行此操作新历史记录必须基于特定初始提交的约束。