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

时间:2011-03-19 18:09:48

标签: git

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

3 个答案:

答案 0 :(得分:72)

正如我在this answer中向Delete or remove all history, commits, and branches from a remote Git repo?解释的那样,您还可以通过执行以下操作来实现与Ceilingfish's answer相同的功能(即删除远程仓库中的所有引用/分支/标记) :

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

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

    git remote add origin <url-to-remote>
    
  3. 镜像推送到远程:

    git push origin --mirror
    
  4. 这将 删除远程仓库中的所有引用/分支/标记 ,任何悬挂提交最终都可能被垃圾回收。来自official Linux Kernel Git documentation for git push(强调我的):

    --mirror
    
         

    指定refs/下的所有引用(包括但不限于refs/heads/refs/remotes/refs/tags/),而不是将每个引用命名为push。到远程存储库。新创建的本地引用将被推送到远程端,本地更新的引​​用将在远程端强制更新, 已删除的引用将从远程端删除 。 / p>

答案 1 :(得分:9)

您可以从像

这样的存储库远程删除分支
git push origin :branchname

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

git push origin :refs/tags/tagname

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

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

答案 2 :(得分:5)

这就是我所做的

  

git rm -r -f -q

     

git commit

     

git push

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