Слияние веток (merge/rebase/fast-forward)

SRC: https://selectel.ru/blog/tutorials/how-to-rebase-commits-and-branches/

Объединить две ветки в гите можно по разному:

Результат один и тот же - (условно) ветка master будет в нашей ветке где мы работаем. У нас будут актуальные изменения из мастера и мы не потеряем наши наработки.

Rebase: В этом случае наши коммиты будут удалены и добавлены в конец к мастер ветке, в отличие от merge, когда коммиты объединяются между собой. Т.е. в итоге коммиты в нашей ветке будут такие:

  1. Наше изменение
  2. Наше изменение
  3. Наше изменение
  4. Изменения из мастера
  5. ...

В случае с merge мы получим такое:

  1. Наши изменения
  2. Мастер
  3. Мастер
  4. Наши изменения
  5. Мастер
  6. ...
  7. Наши измезения
  8. ...

Очевидно, что использовать rebase гораздо удобнее, т.к. наши изменения будут в конце и их будет проще рассматривать, после мержа в мастер не надо будет искать, какие изменения были внесены, они будут идти друг за другом и все будет понятно.

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


Однако у rebase есть и минусы.


Revision #5
Created 11 August 2023 12:04:40 by Ivan
Updated 10 September 2023 19:43:14 by Ivan