我怎样才能完全“重新开始”就地?
如何彻底清除 Git 远程存储库中的所有内容?我是目前唯一的客户,在我可以让它公开之前,我必须清除所有以前的提交。
不是重复的,因为...
这个问题是关于如何在不删除现有存储库的情况下删除历史记录,包括原始基本提交。我的存储库在 SourceForge 上,唯一的方法是销毁整个项目,这需要您提交项目删除请求,他们并不总是同意(尤其是在我的情况下,我的项目小于 90天,所以他们不会批准)。
如何彻底清除 Git 远程存储库中的所有内容?我是目前唯一的客户,在我可以让它公开之前,我必须清除所有以前的提交。
这个问题是关于如何在不删除现有存储库的情况下删除历史记录,包括原始基本提交。我的存储库在 SourceForge 上,唯一的方法是销毁整个项目,这需要您提交项目删除请求,他们并不总是同意(尤其是在我的情况下,我的项目小于 90天,所以他们不会批准)。
您必须在分支上至少提交一次才能将其推送到远程存储库。如果您根本没有头脑,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)
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 push 命令删除分支
$git push origin :remotebranch_name
这将完全删除远程分支
这是一个简单的方法:
创建一个空的 git 存储库。
git init
进行虚拟提交:
touch README.md
git add README.md
git commit -m "first commit"
引用您要覆盖的存储库:
git remote add origin REMOTE_URL
覆盖远程git
git push --force origin
删除现有的远程标签(一一)
git push --delete origin TAG_NAME