Я разрабатывал новую возможность на новом ответвлении, и на стороне фиксировали довольно много изменений на моем основном ответвлении.
Действительно ли возможно объединить основное ответвление в мое новое ответвление, чтобы усовершенствовать его так, чтобы у меня не было слишком многих конфликтов слияния, после того как новая возможность закончена?
Вы можете также git merge master
или git rebase master
, в этом случае я предпочел бы перебазу мерзавцев.
Поскольку 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 теперь заменяются новыми фиксациями', B', C', плюс F и G, которые не были там прежде.
Фактический результат после git rebase master
в ответвлении feature
это:
( A---B---C )
/
/ A'--B'--C' feature
/ /
D---E---F---G master
Фиксации A, B, C свисают после переосновы, но достижимы через git reflog feature
.
Если кто-то вытянул Ваше ответвление, или Вы продвинули его где-нибудь, необходимо объединиться в него вместо этого, для предотвращения беспорядка и дополнительной работы над другим концом. Посмотрите Восстановление с восходящей переосновы.
Это - результат 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