Как изменить только диапазон коммитов с помощью git filter-repo вместо всей истории веток?

Я хочу использовать git filter-repo для автоматического применения некоторого скриптового рефакторинга руководства по стилям для моих запросов на включение нескольких фиксаций.

Поэтому я хочу применить операции только к нескольким последним новым коммитам, которые я нажимаю, но не касаться чего-либо еще в более старой истории.

Есть способ?

Для конкретности вот тестовое репо: https://github.com/cirosantilli/test-git-filter-repository и пример операции с большим двоичным объектом:

# Install git filter-repo.
# https://superuser.com/questions/1563034/how-do-you-install-git-filter-repo/1589985#1589985
python3 -m pip install --user git-filter-repo

# Usage.
git clone https://github.com/cirosantilli/test-git-filter-repository
cd test-git-filter-repository
printf 'd1==>asdf
d2==>qwer
' > replace.txt
git filter-repo --replace-text replace.txt --refs HEAD

на основе: Как заменить строку во всей истории Git?

Вышесказанное повлияет на все 3 коммита тестового репо. Есть ли способ, например, повлиять только на последние 2 коммита?

Операция с большими двоичными объектами должна идеально работать для моего варианта использования, поскольку я хочу касаться только тех капель, которые были изменены моими коммитами.

Я не мог легко найти это в документации.

Я также спросил об их системе отслеживания проблем: https://github.com/newren/git-filter-repo/issues/157

Проверено на git-filter-repo ac039ecc095d.

1 ответ

Попробуйте указать диапазон фиксации как ваш --refs аргумент:

git filter-repo ... --refs HEAD~2..master

Я не нашел упоминания о документах, но из кода похоже, что он передается прямо в git fast-export.

Другие вопросы по тегам