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

Git слияние

Git merge добавляет или интегрирует ваши обновленные изменения из веток функций в базовую ветку. Например, мы создаем проект, в котором есть базовая ветвь с именем master и следующие ветки функций: add , multiply, divide, substract с разными разработчиками, работающими в каждой из этих ветвей.

Теперь мы работаем над операцией умножения, поэтому мы git checkout multiply добавляем наши коммиты.

Недавняя фиксация в multiply — это добавление функции умножения, мы закончили с этой веткой, мы протестировали эту функцию, и ее можно добавить в базовую (master) ветку.

Чтобы локально добавить изменения из multiply в master, мы используем команду merge. Во-первых, давайте checkout в master и просмотрим последние коммиты.

Недавняя фиксация в master — это добавленная функция более высокого порядка в 09:39. Преобразуем git merge multiply в master (Примечание: чтобы объединить ветку функций с базовой веткой, перед слиянием необходимо выполнить проверку в базовой ветке).

Теперь в нашей ветке master все коммиты множатся.

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

Мы используем git rebase для добавления изменений базовой ветки в ветку функций. Итак, мы объединили изменения с multiply на master. Тем временем другая команда работала над divide, они выполнили операцию разделения и зафиксировали свои изменения.

Обратите внимание, divide не в курсе, что мастер обновлен, и для предотвращения конфликтов слияния мы обновляем ветку. Для этого мы используем git rebase , rebase просматривает историю коммитов master и размещаем коммиты в хронологическом порядке.

После переустановки журнал ветки divide обновляется последними обновлениями в master.

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

Краткое содержание

Мы используем git merge для обновления изменений из feature ветки в base ветвь, и мы используем git rebase для добавления изменений из base в feature. Спасибо.

Рекомендации