Недавно мы начали использовать Git вместо CVS.У нас есть ветки "разработка" и "выпуск".Несколько дней назад коллега должен создать выпуск - это означает слияние изменений из ветви разработки в ветку выпуска.
Но он не использовал команду слияния, вместо этого он вручную обновил все измененные файлы в ветви выпуска (этикоторые были изменены в ветке разработки с момента последнего выпуска) и сделали обычный commit / push (я бы назвал это «fake-merge»).
В результате я не вижу «точку слияния» в графе веток,Теперь при попытке объединить несколько коммитов из ветви исправлений (исправление было создано из ветви разработки) в ветку релиза, Git хочет выдвинуть все 1000+ коммитов с момента последнего выпуска, хотя в действительности ветвь релиза имеет все эти изменения.
После фиксации с фальшивым слиянием в ветке релиза имеется несколько новых коммитов и много коммитов в ветви разработки.
Как решить эту проблему?Можно ли как-нибудь «добавить слияние назад во времени»?
Редактировать:
X--D1--D2--...--D1000--DD1--DD2--...---DD10-- ... -- ... -- DD20 (develop branch)
\ "\" \ \ /
\ "\" fake-merge -hotfix--H1--H2-H3
\ "\" \
-R1----------------R2-----------R3-----------------------R4 (release branch)
В коммит R2 включены все изменения от D1 до D1000, но в git графе отсутствует линия соединения между D1000 и R2, поскольку программист меняет все файлы вручную (как он делал это в cvs) и не использовал git merge.
Когда я попытался создать R4, я понял, что отсутствует слияние - соединение D1000 и R2 в git graph, потому что gitтеперь собирается нажать все коммиты D1 - D1000-DD10-H3.