Я читал разные вещи о функции rerere в git и подумываю о ее включении. Но я не видел, чтобы кто-нибудь упоминал о возможных проблемах, которые могут возникнуть при его использовании. Я должен предположить, что есть обратная сторона, иначе она, вероятно, будет включена по умолчанию. Так есть ли обратная сторона включения rerere? Какие потенциальные проблемы это может вызвать, иначе не возникло бы?
git
merge
git-rerere
Райан С. Томпсон
источник
источник
Resolved 'index.html' using previous resolution.
Ответы:
Если вы выполните слияние неправильно, затем отмените его, а затем повторите «то же самое» слияние, оно снова будет некорректным. Однако вы можете забыть записанное разрешение. Из документации :
Будьте осторожны, используя его на определенных путях; Вы же не хотите повсюду уничтожать все записанные вами разрешения. (
forget
без аргументов устарел, чтобы уберечь вас от этого, если вы не вводите текстgit rerere forget .
для явного запроса.)Но если вы не подумаете об этом, вы легко можете поместить это неправильное слияние в свою историю ...
источник
rerere
прежнему остаются файлы с конфликтами, помеченными как несвязанные, так что вам придется вручную добавить их (надеюсь, после их проверки / тестирования) перед фиксацией. Вы всегда можете использоватьgit checkout -m <path>
для проверки исходной конфликтующей версии и при необходимости повторить разрешение.Как упоминает JC Hamano в своей статье « Fun with rerere »
Поэтому, если вы активируете
rerere
слишком широкий контент, вы можете столкнуться с неожиданным или запутанным разрешением слияния из-за последнего пункта.источник
У меня глобально включен rerere. Я действительно не заметил никаких проблем, и, как правило, это облегчает мне жизнь.
источник
Я Cherry выбрал коммит (в gitk), который содержал только двоичный файл. Cherrypick потерпел неудачу из-за конфликта (что естественно), и я разрешил конфликт, сохранив вишневую кирку. Позже я был удивлен, обнаружив в другой ветке с перебазированием, что мои dll не работали - только чтобы обнаружить, что они не были перенесены в перебазирование в качестве (я предполагаю) автоматического разрешения конфликтов. Так что это единственный случай, который я встречал (с включенной функцией rererere), когда я столкнулся с нелогичным (хотя я уверен, что совершенно последовательным) поведением.
источник
git rerere forget path/to/compiled/bin.dll