Имам сравнително голям отрасъл за характеристики, който азискат да се слеят с главния и сливането поражда доста конфликти. Има ли начин да обединя тези клонове по един ангажимент, за да мога да разреша един конфликт наведнъж и да проверя дали всичко работи?
Едно от решенията, за което се сещам, е да използвам rebase вместо сливане, но тогава историята ще стане плоска и аз не искам това. Аз съм добре със създаването на допълнителни ангажименти за „сливане на поправка“, ако това помага.
Отговори:
3 за отговор № 1Вместо да преиздавате клона с големи функции, можете вместо това да пребазирате копие от него. С всички конфликти, разрешени след ребаза, можете да изтеглите разликата:
$ git checkout -b big_feature_branch.rebased big_feature_branch
$ git rebase master big_feature_branch.rebased
# resolve all conflicts
$ git checkout big_feature_branch
$ git diff big_feature_branch big_feature_branch.rebased | git apply -
$ git ci -am "merge fix"
$ git branch -D big_feature_branch.rebased
4 за отговор № 2
Бихте могли да обедините „един ангажимент в даден момент“, но това би създало ангажимент за сливане за всеки ангажимент, който имате в другия клон, което е доста тежко.
За целта просто погледнете откъде сте се разминали master
, и докато сте на master
клон, изд git merge <commit_id>
за всеки ангажимент, започващ от това.
В противен случай просто разрешете големите конфликти веднъж завинаги и всички, които четат историята на вашите ангажименти, ще ви благодарят.
Добър начин за справяне с този проблем в функцията би бил регулаторът за редовно сливане във вашия отрасъл за функции.