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

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

Я разрабатывал новую функцию в новой ветке и параллельно внес несколько изменений в свою главную ветку.

Можно ли объединить основную ветку с моей новой веткой, чтобы поддерживать ее в актуальном состоянии и не допустить слишком много конфликтов слияния после завершения работы над новой функцией?

решение1

Вы также можетеgit merge masterилиgit rebase master.

Если ветвь не была распространена среди других людей, в этом случае я бы предпочелgit-перебазирование.

Потому что git rebaseэто делает так, как если бы изменения в ветке функций были сделаны поверх изменений в главной ветке, что упрощает граф версий.

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

Беря пример изgit rebase руководство, git rebase masterв отрасли feature:

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

Однако git rebaseэто подходит только в том случае, если над ним больше никто не работает, иначе возникнет путаница и дополнительная работа, поскольку старые коммиты A, B, C теперь заменены новыми коммитами A', B', C', а также F и G, которых раньше не было.

Фактический результат после git rebase masterветки featureследующий:

      ( A---B---C ) feature@{1}
       /
      /       A'--B'--C' feature
     /       /
D---E---F---G master

Коммиты A, B, C остаются висящими после перемещения, но доступны git reflog featureчерез feature@{1}.

Слияние

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

Это результат git merge masterветки feature:

      A---B---C feature                    A---B---C---M feature
     /                   --merge-->       /       ,---’
D---E---F---G master                 D---E---F---G master

В качестве альтернативы, если вы git merge featureнаходитесь в ветке master, это будет выглядеть так:

      A---B---C feature                    A---B---C feature
     /                   --merge-->       /         \
D---E---F---G master                 D---E---F---G---M master

Связанный контент