/ / Git сливане клон един ангажимент в даден момент? - git, сливане

Git сливане клон един ангажират в даден момент? - Гит, сливане

Имам сравнително голям отрасъл за характеристики, който азискат да се слеят с главния и сливането поражда доста конфликти. Има ли начин да обединя тези клонове по един ангажимент, за да мога да разреша един конфликт наведнъж и да проверя дали всичко работи?

Едно от решенията, за което се сещам, е да използвам 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> за всеки ангажимент, започващ от това.

В противен случай просто разрешете големите конфликти веднъж завинаги и всички, които четат историята на вашите ангажименти, ще ви благодарят.

Добър начин за справяне с този проблем в функцията би бил регулаторът за редовно сливане във вашия отрасъл за функции.