Git: удалить файлы из хранилища из предыдущих коммитов - PullRequest
4 голосов
/ 14 октября 2010

Я на github. Я установил файл .gitignore, в котором я указываю файлы, которые не будут добавлены в будущие коммиты, так как я пытаюсь облегчить клонирование. Теперь мне нужно удалить все эти файлы .class, например, из всех предыдущих коммитов, чтобы поделиться только необходимыми источниками, в противном случае, независимо от моих усилий, он всегда будет весить более 50 МБ. Я посмотрел на http://cheat.errtheblog.com/s/git Я думаю, что мне может понадобиться состав этой команды, но я действительно не хочу продолжать свою работу. спасибо

Ответы [ 2 ]

11 голосов
/ 14 октября 2010

В документации git-filter-branch есть пример, который соответствует вашему варианту использования.

git clone project project.tmp
cd project.tmp
git filter-branch --prune-empty --index-filter 'git rm --cached --ignore-unmatch *.class' HEAD 
cd ..
git clone project.tmp project.clean
rm -rf project.tmp
cd project.clean

project.clean должен быть готов к отправке в восходящий поток.

PS.Если вы нервничаете из-за того, как может пройти эта операция, вам никогда не помешает экспериментировать с тестовой веткой клонов и github.

0 голосов
/ 12 июня 2013

Прежде чем пытаться это сделать, рекомендуется перейти в ветку тестирования:

тестирование ветки git; тестирование git checkout

Я просто нашел все файлы классов в дереве подтвержденных файлов и затем удалил их из git:

  1. git ls-files | grep * .class
  2. для файла в git ls-files |grep *.class; сделать echo $ file; сделанный; Это просто проверка того, будут ли в моем цикле for все нужные мне файлы до rm
  3. для файла в git ls-files |grep *.class; do git rm --cached $ file; сделано;

Затем вы делаете это в своем git-репо и помещаете это в свой .gitignore:

syntax: regexp
*.class

Как только вы закончите с этим, вы можете добавить это в свою основную ветвь и нажать или просто повторить то же самое в основной ветке.

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