Существуют различные ситуации, в которых вы можете захотеть сделать ребаз.
Вы разрабатываете несколько частей функции в отдельных ветвях, а затем понимаете, что в действительности они представляют собой линейную последовательность идей. Перебазируйте их в эту конфигурацию.
Вы разворачиваете тему не с того места. Может быть, это слишком рано (вам нужно что-то позднее), может быть, слишком поздно (на самом деле это относится и к предыдущим версиям). Переместите его в нужное место. «Слишком поздний» случай фактически не может быть исправлен слиянием, поэтому ребаз является критическим.
Вы хотите проверить взаимодействие ветви с другой веткой, но по какой-то причине не хотите объединяться. Например, вы можете захотеть увидеть, какие конфликты возникают при фиксации за коммитом, а не за все сразу.
Общая тема здесь заключается в том, что чрезмерное слияние загромождает историю, а перебазирование - это способ избежать этого, если вы сначала не получили правильный план ветвления / слияния. Слишком много слияний может затруднить отслеживание истории человеком, а также затруднить использование таких инструментов, как git-bisect
.
Есть также много случаев, которые вызывают интерактивный перебаз:
Несколько коммитов должны были быть одним коммитом.
Коммит (не текущий) должен был быть несколькими коммитами.
В коммите (не текущем) произошла ошибка в нем или его сообщении.
Необходимо удалить коммит (не текущий).
Комитеты должны быть переупорядочены (например, для более логичной передачи).
Хотя это правда, что вы «теряете историю», делая это, реальность такова, что вы хотите публиковать только чистые работы. Если что-то еще не опубликовано, можно перебазировать его, чтобы преобразовать в способ, которым вы должны были зафиксировать это. Это означает, что окончательная версия в общедоступном репозитории будет логичной и легкой для понимания, без сохранения каких-либо ошибок, которые имел разработчик на этом пути.