2

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

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

不是重复的,因为...

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

4

5 回答 5

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)
于 2012-07-18T17:43:17.847 回答
1

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

于 2012-07-18T17:20:46.080 回答
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

这是一项破坏性操作,因此请确保您确实想要先执行此操作。

于 2012-07-18T17:25:15.137 回答
0

使用 git push 命令删除分支

$git push origin :remotebranch_name

这将完全删除远程分支

于 2012-07-19T08:35:50.877 回答
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

于 2019-12-11T12:58:13.203 回答