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