Во-первых, в git нет небезопасных операций. У rebase есть операция прерывания, и все операции попадают в reflog, так что вы можете отменить все что угодно. На самом деле все как раз наоборот.
Это позволяет вам свободно совершать коммиты в любое время, когда вам не нужно иметь "хорошую" сборку, пока вы на пути к ее созданию. Ревизии, которые вы публикуете , можно очистить, сложив все шаги, которые вы сделали на этом пути, в один коммит.
Я использую rebase все время (довольно часто с помощью pull, который я обычно настраиваю, чтобы перебазировать после фазы выборки). Не думайте об этом как о переписывании истории - думайте, что это инструмент для очистки вашего черновика перед публикацией.
Через год кому-нибудь в вашем проекте будет важно знать, что вы действительно запустили эту функцию против ревизии E
, а не ревизии G
?
Ненужные рекурсивные слияния скрывают более важные части истории.