Удаление папки из всех коммитов git

IDE, VCS и прочее

Модератор: Модераторы разделов

alex925
Сообщения: 5
ОС: Debian

Удаление папки из всех коммитов git

Сообщение 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

Из истории изменений в коммитах папка исчезает, а размер папки с проектом не изменяется. Подскажите, что не так и как решить мою задачу?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19769
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Удаление папки из всех коммитов git

Сообщение Bizdelnick »

Попробуйте git gc --prune=all.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
alex925
Сообщения: 5
ОС: Debian

Re: Удаление папки из всех коммитов git

Сообщение 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)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8256
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Удаление папки из всех коммитов git

Сообщение serzh-z »

alex925 писал(а):
26.01.2016 20:25
а размер папки с проектом не изменяется.
А если сделать `git clone old-project-dir new-project-dir`? new-project-dir - такого же размера?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5186
ОС: Gentoo

Re: Удаление папки из всех коммитов git

Сообщение /dev/random »

Полагаю, старая ветка осталась в рефлоге.
Спасибо сказали:
alex925
Сообщения: 5
ОС: Debian

Re: Удаление папки из всех коммитов git

Сообщение 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 вроде удаляю же
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19769
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Удаление папки из всех коммитов git

Сообщение Bizdelnick »

Я в таких случаях всегда использовал --tree-filter и с подобными проблемами не сталкивался.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8256
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Удаление папки из всех коммитов git

Сообщение serzh-z »

alex925 писал(а):
27.01.2016 12:04
И что делать с этим? Папку .git/refs/original вроде удаляю же
Что в выводе `git for-each-ref refs/original`?
Спасибо сказали:
alex925
Сообщения: 5
ОС: Debian

Re: Удаление папки из всех коммитов git

Сообщение alex925 »

serzh-z писал(а):
27.01.2016 15:48
Что в выводе `git for-each-ref refs/original`?

Ничего
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8256
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Удаление папки из всех коммитов git

Сообщение serzh-z »

alex925 писал(а):
27.01.2016 17:36
Ничего
Если уже ничего, то `git reflog expire --expire=now --all && git gc --prune=now` должно помочь.
Спасибо сказали:
alex925
Сообщения: 5
ОС: Debian

Re: Удаление папки из всех коммитов git

Сообщение alex925 »

serzh-z писал(а):
27.01.2016 17:39
Если уже ничего, то `git reflog expire --expire=now --all && git gc --prune=now` должно помочь.

Вот это помогло, благодарствую) А можете пояснить, что эта команда делает?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8256
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Удаление папки из всех коммитов git

Сообщение serzh-z »

alex925 писал(а):
27.01.2016 18:57
А можете пояснить, что эта команда делает?
Помечает записи в reflog (которые, в том числе, ссылались на удаленные блобы) устаревшими и запускает сборщик мусора.

В принципе, push так же должен был бы помочь избавится от рефлога и, как результат, бесхозных блобов. Или - `git clone ...` и последующий `git gc`. reflog не копируется при клонировании или push.
Спасибо сказали: