Страница 1 из 1
Удаление папки из всех коммитов git
Добавлено: 26.01.2016 20:25
alex925
Хочу удалить из всех коммитов большую папку. Пытался это сделать с помощью команд:
Код: Выделить всё
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch bin' --prune-empty --tag-name-filter cat -- --all
rm -rf .git/refs/original && git gc --aggressive
Из истории изменений в коммитах папка исчезает, а размер папки с проектом не изменяется. Подскажите, что не так и как решить мою задачу?
Re: Удаление папки из всех коммитов git
Добавлено: 26.01.2016 20:47
Bizdelnick
Попробуйте git gc --prune=all.
Re: Удаление папки из всех коммитов git
Добавлено: 26.01.2016 21:23
alex925
Bizdelnick писал(а): ↑26.01.2016 20:47
Попробуйте
git gc --prune=all.
Не помогает, размер папки остался тот же
Выхлоп получил, вот такой:
MacBook-Air-Aleksej:vk-downloader alex$ git gc --prune=all
Counting objects: 164, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (76/76), done.
Writing objects: 100% (164/164), done.
Total 164 (delta 81), reused 164 (delta 81)
Re: Удаление папки из всех коммитов git
Добавлено: 27.01.2016 00:37
serzh-z
alex925 писал(а): ↑26.01.2016 20:25
а размер папки с проектом не изменяется.
А если сделать `git clone old-project-dir new-project-dir`? new-project-dir - такого же размера?
Re: Удаление папки из всех коммитов git
Добавлено: 27.01.2016 04:23
/dev/random
Полагаю, старая ветка осталась в рефлоге.
Re: Удаление папки из всех коммитов git
Добавлено: 27.01.2016 12:04
alex925
serzh-z писал(а): ↑27.01.2016 00:37
alex925 писал(а): ↑26.01.2016 20:25
а размер папки с проектом не изменяется.
А если сделать `git clone old-project-dir new-project-dir`? new-project-dir - такого же размера?
Проект такого же размера остается
/dev/random писал(а): ↑27.01.2016 04:23
Полагаю, старая ветка осталась в рефлоге.
И что делать с этим? Папку .git/refs/original вроде удаляю же
Re: Удаление папки из всех коммитов git
Добавлено: 27.01.2016 13:28
Bizdelnick
Я в таких случаях всегда использовал --tree-filter и с подобными проблемами не сталкивался.
Re: Удаление папки из всех коммитов git
Добавлено: 27.01.2016 15:48
serzh-z
alex925 писал(а): ↑27.01.2016 12:04
И что делать с этим? Папку .git/refs/original вроде удаляю же
Что в выводе `git for-each-ref refs/original`?
Re: Удаление папки из всех коммитов git
Добавлено: 27.01.2016 17:36
alex925
serzh-z писал(а): ↑27.01.2016 15:48
Что в выводе `git for-each-ref refs/original`?
Ничего
Re: Удаление папки из всех коммитов git
Добавлено: 27.01.2016 17:39
serzh-z
alex925 писал(а): ↑27.01.2016 17:36
Ничего
Если уже ничего, то `git reflog expire --expire=now --all && git gc --prune=now` должно помочь.
Re: Удаление папки из всех коммитов git
Добавлено: 27.01.2016 18:57
alex925
serzh-z писал(а): ↑27.01.2016 17:39
Если уже ничего, то `git reflog expire --expire=now --all && git gc --prune=now` должно помочь.
Вот это помогло, благодарствую) А можете пояснить, что эта команда делает?
Re: Удаление папки из всех коммитов git
Добавлено: 29.01.2016 14:08
serzh-z
alex925 писал(а): ↑27.01.2016 18:57
А можете пояснить, что эта команда делает?
Помечает записи в reflog (которые, в том числе, ссылались на удаленные блобы) устаревшими и запускает сборщик мусора.
В принципе, push так же должен был бы помочь избавится от рефлога и, как результат, бесхозных блобов. Или - `git clone ...` и последующий `git gc`. reflog не копируется при клонировании или push.