git
немного напоминает машину времени.
Теперь вы находитесь в затруднительном положении, потому что у вас есть пять уникальных версий программного обеспечения для согласования в единый продукт , Оглядываясь назад, эта проблема даже не существовала бы, если бы ветви были объединены и преобразованы в общий продукт по мере добавления функций. Возможно, у вас есть что-то похожее на это дерево:
C--D
/
R--*--*--*--*--*--E
\ \
A B
Даже если у вас нет дерева в данный момент, пока вы знаете историю, вы можете сделать вывод и использовать тот же процесс, копируя версии поверх вашей рабочей копии вместо слияния.
Что было бы удивительно, если бы мы могли go вернуться в то время, когда у нас был первый форк (A
, * 1014) *) и объединить их в base-branch
. Вы можете сделать это с помощью команды git checkout
;
$ git checkout -b base-branch R
Дает;
R--*--*
\ \
A B
Это кажется более управляемым; git merge A
- быстрая перемотка вперед, тогда git merge B
потребует некоторого рефакторинга, но у нас будет;
*--B
/ \
R--*---a--b <- (base-branch)
\ /
A
Это именно то, чего вы хотели бы добиться. Первый набор функций A
будет объединен с base-branch
, за которым следует набор функций B
, для которого потребуется весь необходимый рефакторинг.
Представьте, что вы снова вернулись во времени, но на этом графике мы получил base-branch
и мы только что выпустили C
, D
и E
. Мы хотим эти наборы функций в базовой ветви. Вы можете продолжить с git merge C
, рефакторинг, git merge D
, рефакторинг, так как он больше не может быть перемоткой вперед. Наконец, git merge E
, рефакторинг, и все готово.
*--*--E
/ \
*--C--D \
/ \ \ \
*--B \ \ \
/ \ \ \ \
R--*---a--b---c--d---e <- (base-branch)
\ /
A
В результате вы получаете историю вашего проекта, которая выглядит точно так же, как и вы. Каждый набор функций разрабатывался в хронологическом порядке так, как если бы он все время выполнялся правильно.
Это будет непросто, и вы будете проводить больше рефакторинга, чем gitting . Поместите себя в мышление авторов в то время и объедините их так, как если бы они были немного приукрашены.