Есть ли недостатки для включения git reerere?

Я читал различные вещи о функции git rerere, и я рассматриваю возможность ее включения. Но я не видел, чтобы кто-нибудь упоминал о возможных проблемах, которые могут возникнуть при его использовании. Я должен предположить, что есть недостаток, или он, вероятно, будет включен по умолчанию. Итак, есть ли недостаток, позволяющий ререре? Какие потенциальные проблемы могут возникнуть в противном случае?

Ответ 1

Если вы делаете слияние неправильно, то отбросьте его, затем снова выполните "то же" слияние, оно будет неверным снова. Однако вы можете забыть записанное разрешение. Из документация:

git rerere forget <pathspec>

Это сбрасывает разрешения конфликтов, которые ререре записаны для текущего конфликта в <pathspec>.

Будьте осторожны, чтобы использовать его на определенных путях; вы не хотите удалять все ваши записанные резолюции повсюду. (forget без аргументов устарел, чтобы избавить вас от этого, если вы не наберете git rerere forget ., чтобы явно запросить его.)

Но если вы не думаете об этом, вы можете легко положить это неправильное слияние в свою историю.

Ответ 2

Как Дж. К. Хамано упоминает в своей статье " Fun with reerere"

  • Rerere помнит, как вы решили разрешить конфликтующие регионы;
  • Rerere также помнит, как вы коснулись вне конфликтных регионов, чтобы приспособиться к семантическим изменениям;
  • Rerere может повторно использовать предыдущее разрешение, даже если вы объединили две ветки с различным содержимым, чем тот, который вы разрешили ранее.

Даже те, кто долгое время пользовались ререром, часто не замечают последнего момента.

Итак, если вы активируете rerere слишком широкий контент, вы можете столкнуться с неожиданным или запутанным разрешением слияния из-за последней точки.

Ответ 3

У меня есть reerre глобально включен. Я действительно не заметил никаких проблем, и обычно это облегчает мою жизнь.

Ответ 4

Я вишневый выбрал фиксацию (в gitk), содержащую только двоичный файл. Черрипик потерпел неудачу из-за конфликта (что доходит до того, что это естественно), и я разрешил конфликт, сохраняя выбор вишни. Позднее я был удивлен, увидев в другой переустановленной ветке, что мои dlls не вели себя - только чтобы обнаружить, что они не были перенесены в rebase, как (я предполагаю) автоматическое разрешение конфликтов. Таким образом, это единственный случай, который я встретил (с включенным reerere) в противоречивое (хотя я уверен, абсолютно согласующееся) поведение.