2013-05-26 2 views
0

У меня много дельта-файлов (. * ~) Во многих битках в Git, и я хочу удалить все файлы из всех коммитов.Как удалить определенные файлы из всех коммитов в репозитории Git?

+0

Я добавил эти файлы и совершил код. Я хочу удалить, чтобы удалить его –

+0

Является ли репо опубликованным или просто используемым вами? Вам нужна история изменений? Если вы не просто удалите папку '.git' и начните заново. Еще раз проверьте эту ссылку https://help.github.com/articles/remove-sensitive-data –

ответ

2

Удалить из всех коммитов выглядит как с помощью git filter-branch:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .*~' HEAD 

GitHub help page имеет более полную команду:

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch .*~' --prune-empty --tag-name-filter cat -- --all 

С (как уже упоминалось в этой blog post):

  • --index-filter, который похож на --tree-filter, но не проверяет дерево, и он идет намного быстрее.
  • --ignore-unmatch параметр, используемый для игнорирования несуществующих файлов.

Это могло бы переписать историю вашего репо.
Это означает, что любые коллаборационисты, которые уже клонировали упомянутое репо, должны были сбросить свой локальный клон в новую историю вашего репо после того, как вы это сделаете git push --force.

Смежные вопросы