Как изменить только диапазон коммитов с помощью 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
.