Проблема с слиянием двух веток в одну

Мы работаем командой из нескольких человек, занимаемся на Unity. Гитом я до этого работал хорошо, когда писал именно сайты, потому что там только код и легко делать merge. Здесь же я столкнулся с родом проблем. Делал я всё как обычно создавал ветки от мастера. Вот создали мы 5 веток от мастера и пришла пора их слить, и допустим с первой веткой прошло всё отлично так как она первая. Но пошёл слиять вторую ветку, а у этого второго человека нет же изменений которые есть на мастере, так как я только что сделал мердж первой ветки и в итоге все файлы первой ветки при слиянии второй ветки удалились. Не трудно догадаться, что если я делаю мердж третьей ветки, то дропаются файлы второй и в итоге получается вообще не понятно что. Можно ли как-то мерджить эти ветки, но чтобы файлы не удалялись загруженные ранее? Что я не так делаю? Там ещё проблема будет, что на одной сцене работает 3 человека для быстрой работы и там наверное уже гг будет. Есть ли какие-то программы, которые помогают мерджить Юнити проекты, потому что я делаю через git Desctope


Ответы (2 шт):

Автор решения: Lazy Badger
  1. Гейм-дизайнеры именно для Unity (и прочего с кучей бинарников в работе) сильно форсят няшность Plastic SCM (сам не пробовал, мнения не имею), смотреть можно начинать отсюда https://unity.com/solutions/version-control-artists
  2. Как уже отметил @tocic, перед 2+ мержем в master, надо синхронизировать feature-branches мержем из master в каждый из них. И аккуратно подбирать, чуть ли пальцем в небо, (diff|merge)tool и merge-policy, чтобы не убивать бинари с одной стороны слияния полностью (готового рецепта у меня нет)
→ Ссылка
Автор решения: KordDEM

Действительно как же так получается))

  1. Сливаете первую ветку с мастером локально(что бы внести в вашу ветку изменения с мастера и локально разрешить конфликты). Пушите свою ветку, что бы она обновилась удаленно(теперь на вашей удаленной ветке хранится объединенная локальная ветка с изменениями и мастер актуальный). Делаете медж в мастер вашей удаленной ветки на сервере(тут не возникнет конфликтов т.к. вы их все разрешили локально и все изменения сохранятся).
  2. После того как соединили мастер и первую ветку. Владелец второй ветки сливает себе изменения на локальный мастер(что бы получить ваши залитые изменения). Локально делает мердж мастера в свою ветку(что-бы разрешить конфликты локально). Пушит свою локальную ветку в удаленную(публикация). Делаете медж в удаленный мастер с вашей второй веткой(на мастере окажется его ветка содержащая вашу ветку, которая содержит мастер). Все по принципу матрешки) и т.д.

P.S. Если вы все будете сливать свои ветки с мастером без его постоянного обновления на локальных копиях, логично что все изменения с предыдущих веток затрутся.

→ Ссылка