Можно ли изменить сообщения фиксации с помощью git rebase, но без повторного разрешения конфликтов слияния?
Мне нужно поклониться более старому репо, и я не хочу менять какой-либо код, а только сообщения.
Я пробовал --preserve-merges
.
Можно ли изменить сообщения фиксации с помощью git rebase, но без повторного разрешения конфликтов слияния?
Мне нужно поклониться более старому репо, и я не хочу менять какой-либо код, а только сообщения.
Я пробовал --preserve-merges
.
Есть малоизвестная особенность git под названием "Повторное использование записанных разрешений", или rerere
.
Вы можете включить его глобально, запустив git config --global rerere.enabled true
.
Если rerere
включен, git
автоматически сохраняет разрешения конфликтов и будет использовать эти разрешения позже, если столкнется с такими же конфликтами. Это приводит к тому, что пользователь не требует повторного разрешения этих ранее обнаруженных конфликтов.
Функция объясняется здесь - Git - Rerere.
Документация для команды git rerere
находится здесь - git-rerere (1).
Примечание: поскольку сценарий contrib/rerere-train.sh
должен переобучать переосмысление (вы можете увидеть переобучение вручную здесь)
Чтобы rerere
забыл все свое текущее разрешение перебазировки, теперь у вас есть официальная опция с Git 2.14.x/2.15 (3 квартал 2017 года) для contrib/rerere-train
: флаг --overwrite
.
Смотрите коммит ad53bf7 (26 июля 2017 г.) от Рамана Гупты (rocketraman
).
(Merged by Junio C Hamano -- [TG45] -- in commit aec68c3, 11 Aug 2017)
contrib/rerere-train
: при желании перезаписать существующие разрешенияПредоставьте пользователю возможность перезаписывать существующие разрешения, используя
--overwrite
флаг.Это может быть использовано, например, если пользователь знает, что у него уже есть запись в своем кэш-памяти перерегистрации для конфликта, но хочет удалить ее и переобучиться на основе коммитов слияния, переданных в сценарий переобучения.