如何完全消除Git远程存储库中的所有内容?我是目前唯一的客户,在我将其公之于众之前,我必须彻底清除所有以前的提交。
此问题是关于如何删除历史记录,包括原始基本提交,而不删除现有存储库。我的存储库在SourceForge上,唯一的方法是销毁整个项目,这需要你提交一个项目删除请求,他们并不总是授予(特别是在我的情况下,我的项目不到90岁)天,所以他们不会批准它。)
答案 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)
这是一种简单的方法:
创建一个空的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