Многим из нас как разработчику приходится выбирать между слиянием и перебазированием. Здесь я объясню, что такое слияние и перебазирование, почему вы должны их использовать и как это сделать.

Ту же функцию выполняют Git Merge и Git Rebase. Они созданы для включения корректировок из разных подразделений в один. Хотя конечная цель одна и та же, эти два подхода достигают ее по-разному, и полезно знать разницу, когда вы становитесь лучшим разработчиком программного обеспечения.

Что такое Git Merge и Git Rebase?

Git Merge и Git Rebase используются для объединения изменений веток, но по-разному.

Git Merge. Для разработчиков, использующих системы контроля версий, слияние является распространенным методом. Слияние берет содержимое исходной ветки и объединяет его с целевой веткой, если быть более точным. В этом процессе обновляется только целевая ветвь. История исходной ветки остается похожей.

Git Rebase. Еще один способ интегрировать изменения из одной ветки в другую — с помощью Rebase. Rebase сжимает все модификации в один патч. Затем патч вставляется в целевую ветку.

Git слияние

Объедините несколько историй филиалов вместе.

A---B---C feature
 /
D---E---F---G master

если мы объединяем функцию и основную ветку, то это будет

A---B---C feature
 /               \
D---E---F---G---H master

Команды для объединения функции и главной ветки

git checkout featuregit merge master

Примечание.

  • слияние выполняет только один новый коммит
  • если фича ветка имеет совсем другое развитие
  • Если у вас возникнет конфликт при объединении resolve conflictsgit add (changes)git merge --continue

Git перебазировать

Повторное применение коммитов поверх базовой ветки

A---B---C feature
 /
D---E---F---G master

если мы перемещаем функциональную ветку на главную ветку, то это будет

A'--B'--C' feature
	 /
	D---E---F---G master

если мы перемещаем функциональную ветку на главную ветку, то это будет

Команды для объединения функции и главной ветки

git checkout featuregit rebase master

Примечание.

  • rebase обычно выполняет несколько (количество коммитов в текущей ветке).
  • Если у вас возник конфликт при перебазировании resolve conflictsgit add (changes)git rebase --continue

Когда использовать Git Rebase или Git Merge

Выберите Объединить

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

Выберите Перебазировать

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

Вывод

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

Прокомментируйте темы, о которых вы хотели бы, чтобы я написал в ближайшие недели :)

Первоначально опубликовано на https://www.loginradius.com.