Страница 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.