Удалить все файлы и историю из удаленного репозитория Git, не удаляя сам репо - PullRequest
49 голосов
/ 19 марта 2011

Буду признателен, если кто-нибудь скажет мне, как я могу удалить каждый отдельный файл / папку в моем git-репозитории без фактического удаления самого репозитория. Я также хочу удалить всю историю, связанную с этими файлами.

Ответы [ 3 ]

72 голосов
/ 12 августа 2013

Как я объясню в этот ответ на Удалить или удалить всю историю, коммиты и ветки из удаленного репозитория 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)"
    
  2. Добавление удаленного репо в качестве источника:

    git remote add origin <url-to-remote>
    
  3. Зеркальное отображение на пульте дистанционного управления:

    git push origin --mirror
    

Это удалит все ссылки / ветки / теги в вашем удаленном репо , и любые висящие коммиты, вероятно, будут в конечном итоге собраны мусором. Из официальной документации Linux Kernel Git для git push (выделено мной):

--mirror

Вместо того, чтобы называть каждую ссылку push, указывает, что все ссылки под refs/ (включая, но не ограничиваясь refs/heads/, refs/remotes/ и refs/tags/) будут отражаться в удаленном репозитории. Вновь созданные локальные ссылки будут отправлены на удаленный конец, локально обновленные ссылки будут принудительно обновлены на удаленном конце, а удаленные ссылки будут удалены с удаленного конца .

9 голосов
/ 19 марта 2011

Вы можете удалить ветку с удаленного хранилища, как это

git push origin :branchname

, если у вас есть какие-либо теги, вы можете удалить их следующим образом:

git push origin :refs/tags/tagname

Это предполагает, что выиметь удаленную настройку на github с именем origin

Тем не менее, на вашем компьютере останутся локальные теги / ветви.

5 голосов
/ 25 января 2012

Вот что я сделал

git rm -r -f -q

git commit

git push

Затем вы должны вручную удалить файлы, git rm удалить файлы из репозитория, но не из файловой системы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...