Короткий вариант заключается в том, что --tree-filter
проверяет каждую фиксацию во временном каталоге, запускает вашу команду фильтра и создает новую фиксацию из того, что теперь находится во временном каталоге; в то время как --index-filter
копирует каждую фиксацию в индекс, запускает команду фильтра и строит новую фиксацию из того, что теперь находится в индексе.
Копирование фиксации к индексу значительно быстрее, чем проверка фиксации. Создание фиксации из индекса происходит быстрее, чем создание фиксации из каталога. В результате использование индексного фильтра намного быстрее, чем использование фильтра дерева. Тем не менее, это не так просто.
Разница точная скорость зависит от вашей временной директории: файл системы в памяти происходит быстрее, чем в файловой системе на-SSD, который быстрее, чем на спиннинг-медиа, так что вы получите больше, если вы используете прядильные носители, чем если бы вы могли указать фильтр дерева на файловую систему в памяти. Но даже тогда индексный фильтр еще быстрее.
На реальных дисках я видел около 100 или около того (следовательно, индексный фильтр, который занимает 2 минуты, преобразуется в фильтр дерева, который занимает 3 часа).
Вы прочитали [документацию] (https://git-scm.com/docs/git-filter-branch)? –
@TimBiegeleisen Я знаю, но я считаю, что эти концепции Git трудно понять ... – GoTop