Многим из нас как разработчику приходится выбирать между слиянием и перебазированием. Здесь я объясню, что такое слияние и перебазирование, почему вы должны их использовать и как это сделать.
Ту же функцию выполняют 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.