Каковы преимущества переустановки слияния в git?

В этой статье автор объясняет перебазирование этой диаграммой:

enter image description here

Повторите: если вы еще не опубликовали свою ветку или четко заявили, что другие не должны основывать свою работу на ней, у вас есть альтернатива. Вы можете перебазировать свою ветку, где вместо слияния ваш коммит заменяется другим коммитом с другим родителем, и ваша ветка перемещается туда.

в то время как нормальное слияние выглядело бы так:

enter image description here

Таким образом, если вы сделаете ребазинг, вы просто потеряете историческое состояние (которое будет собирать мусор в будущем). Итак, почему кто-то хочет сделать ребаз вообще? Что мне здесь не хватает?

Ответы

Ответ 1

Существует множество ситуаций, в которых вы можете захотеть переустановить.

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

  • Вы несете тему из-за неправильного места. Возможно, это слишком рано (вам нужно что-то позже), может быть, слишком поздно (это также относится и к предыдущим версиям). Переместите его в нужное место. Случай с "слишком поздним" на самом деле не может быть исправлен слиянием, поэтому перегрузка имеет решающее значение.

  • Вы хотите протестировать взаимодействие ветки с другой ветвью, но по какой-то причине не хотите сливаться. Например, вы можете увидеть, какие конфликты вызывают commit-by-commit, а не все сразу.

Общая тема здесь заключается в том, что чрезмерное слияние загромождает историю, а перезарядка - это способ избежать этого, если вы сначала не получили план ветки/слияния. Слишком много слияний может затруднить человеку отслеживание истории, а также может затруднить использование таких инструментов, как git-bisect.

Есть также все многочисленные случаи, которые вызывают интерактивную перезагрузку:

  • Несколько коммитов должны были быть одним фиксатором.

  • Конец (а не текущий) должен состоять из нескольких коммитов.

  • Ошибка (а не текущая) имела ошибку в ней или ее сообщение.

  • Необходимо удалить фиксацию (а не текущую).

  • Записи должны быть переупорядочены (например, для более логичного потока).

Хотя верно, что вы "теряете историю", делая это, реальность такова, что вы хотите публиковать только чистую работу. Если что-то еще не опубликовано, все в порядке, чтобы переустановить его, чтобы превратить его в способ, которым вы должны были его совершить. Это означает, что окончательная версия в публичном репозитории будет логичной и простой в использовании, не сохраняя ни одной икоты, которую разработчик имел на этом пути.

Ответ 2

Rebasing позволяет собирать слитки в правильном порядке. Теория слияния означает, что вам не стоит беспокоиться об этом. Реальность разрешения сложных конфликтов упрощается, если вы переустанавливаете, а затем меняете новые изменения в порядке.

Возможно, вы захотите прочитать Bunny Hopping