git reword без разрешения конфликтов слияния снова

Можно ли изменить сообщения фиксации с помощью git rebase, но без повторного разрешения конфликтов слияния?

Мне нужно сделать более старое репо, и я не хочу менять какой-либо фактический код, а только сообщения.

Я пробовал --preserve-merges.


person chpatrick    schedule 12.02.2012    source источник


Ответы (2)


В git есть малоизвестная функция под названием «Повторное использование записанных разрешений», или rerere.

Вы можете включить его глобально, запустив git config --global rerere.enabled true.

Если rerere включен, git будет автоматически сохранять разрешения конфликтов и повторно использовать эти разрешения позже, если возникнут те же конфликты. В результате пользователю не требуется повторно разрешать ранее обнаруженные конфликты.

Эта функция объясняется здесь - Git - Rerere.

Документация для команды git rerere находится здесь - git-rerere (1 ).

person Jordan Lewis    schedule 13.02.2012
comment
К сожалению, это поможет вам, только если вы включили его при первом слиянии - сейчас уже слишком поздно. В разделе есть скрипт под названием rerere-train contrib часть исходного кода Git, которая просматривает существующую историю и заставляет повторно изучить разрешения конфликтов из существующих слияний - если это работает, это поможет вам в этом случае. - person Cascabel; 13.02.2012

Примечание: поскольку сценарий contrib/rerere-train.sh должен повторно переобучение (вы можете увидеть ручное переобучение здесь)

Чтобы убедиться, что rerere забывает все свое текущее разрешение перебазирования, теперь у вас есть официальный вариант с Git 2.14.x / 2.15 (3 квартал 2017 г.) для contrib/rerere-train: флаг --overwrite.

См. commit ad53bf7 (26 июля 2017 г.) на Раман Гупта (rocketraman).
(Объединено Junio ​​C Hamano - gitster - в фиксации aec68c3, 11 августа 2017)

contrib/rerere-train: опционально перезаписать существующие разрешения

Предоставьте пользователю возможность перезаписать существующие разрешения с помощью флага --overwrite.

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

person VonC    schedule 13.08.2017
comment
Как мы называем переобучение? Должны ли мы создать новый файл, а затем запустить сценарии? - person otong; 31.08.2020
comment
@omg вы можете увидеть пример вызова этого скрипта в stackoverflow.com/a/42416725/6309 - person VonC; 31.08.2020