从远程Git仓库中删除所有文件和历史记录,而不删除仓库本身

max*_*ax_ 50 git

如果有人能告诉我如何删除我的git存储库中的每个文件/文件夹而不实际删除存储库本身,我将不胜感激.我想删除与这些文件相关的所有历史记录.

小智 73

正如我在解释这个答案,以删除或删除所有的历史,提交和分支从远程的Git回购?,你也可以通过以下方式实现与Ceilingfish的答案相同的事情(即删除远程仓库中的所有引用/分支/标签):

  1. 使用初始提交创建新的空仓库:

    mkdir new
    cd new
    echo "This is the README" > README.md
    git init
    git add .
    git commit -m "Add README.md (initial commit)"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加远程仓库作为原产地:

    git remote add origin <url-to-remote>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 镜像推送到远程:

    git push origin --mirror
    
    Run Code Online (Sandbox Code Playgroud)

这将删除远程仓库中的所有引用/分支/标签,任何悬挂提交最终都可能被垃圾收集.从官方Linux Kernel Git文档git push(强调我的):

--mirror
Run Code Online (Sandbox Code Playgroud)

代替命名每个裁判推的,指定了下的所有参考文献refs/(包括但不限于refs/heads/,refs/remotes/refs/tags/)被镜像到远程存储库.新创建的本地引用将被推送到远程端,本地更新的引​​用将在远程端强制更新,并且已删除的引用将从远程端删除.


Cei*_*ish 10

您可以从这样的存储库远程删除分支

git push origin :branchname
Run Code Online (Sandbox Code Playgroud)

如果您有任何标签,可以删除它们,如下所示:

git push origin :refs/tags/tagname
Run Code Online (Sandbox Code Playgroud)

这假设你有一个远程设置为github称为origin

但是,这会在您的计算机上留下本地标签/分支.

  • @Mark:或者只是创建一个新的存储库,初始提交你想要的任何内容(如果需要,不包括任何内容),并推送该repo的主分支.完成. (7认同)

小智 5

这就是我所做的

git rm -r -f -q

git commit

git push

然后你必须手动删除文件,git rm从repo中删除文件,但不从文件系统中删除