Во многих рабочих процессах git вы можете различать ветви функций и "стабильные" ветви.
Возьмите этот пример (произвольный рабочий процесс может отличаться от вашего, но только для того, чтобы подчеркнуть стабильность/ feature ветки) и рассмотрим его историю:
-----------------D <<< feature-bar
/ \
---A------------E-------H---J <<< master
\ / \ /
B--------C F---G---I <<< feature-foo
master
- стабильная ветка, она постоянна и отражает текущее состояние приложения. В некоторых рабочих процессах у вас есть более стабильные ветви, одна для подготовки, одна для разработки, одна для стабильного рабочего состояния и т. Д.
С другой стороны, функциональные ветви являются изменчивыми и одноразовыми. Каждый из них создается для определенной потребности (как правило, исправления ошибок, новой функции) и удаляется, когда он, наконец, объединяется в свое стабильное место назначения. (В приведенной выше схеме feature-bar
и feature-foo
, но мы также можем догадаться, что в какой-то момент была ветвь, указывающая на C
, которая была удалена после объединения E
.)
Когда разработчик работает один над своей веткой функций, если он еще не объединен, все, что он делает в своей ветке, остается в ней и , что часть истории может быть изменена, путем ребазирования или любой другой операции, безпагубные последствия для кого-либо еще.
Конечно, в большинстве случаев отказ от стабильной ветки был бы большим нет-нет, потому что все остальные разработчики разделяют эту часть истории репо и должны будут разрешать потенциально неприятные конфликты.
Я использовал слияния здесь в своей схеме и объяснении, но рабочий процесс, использующий rebase, также сделал бы такое же различие между стабильными / функциональными ветвями.
Если вы работаете в одиночкув ветви функций , затем создайте PR, а затем поймете, что вам нужно перебазировать его, без проблем, PR обновится после того, как вы добавите новую историюветвь, и ничто не будет испорчено в истории ветки назначения.
Что может быть намного более проблематичным, это перебазировать стабильные ветки , которыми делятся другие, потому что это вызовет противоречивые истории,что, да, может быть неприятно решить.
Статья, на которую вы ссылаетесь, очень интересна, я согласен с основным пунктом, однако учтите, что она может вводить в заблуждение, когда вы обнаруживаете git и пытаетесь использовать его эффективно. Это довольно продвинутые соображения, которые могут привести к " cargo-cult " практикам, если им следовать без ясного понимания. Rebase - полезный инструмент, не выбрасывайте его.