Я работаю над веб-приложением с командой среднего размера. Мы версионируем / коллективно кодируем этот проект, используя Git. Между моим коллегой и мной, я думаю, мы столкнемся с трудным слиянием, и я хотел бы посмотреть, есть ли что-нибудь, что мы можем сделать лучше, прежде чем столкнемся с неприятностями.
Мы в основном работаем в Git над ветвью разработки:
D-E-F-G
Мой сотрудник создал ветку, чтобы работать над большими изменениями:
A
/
D-E-F-G
Затем я потянул эту ветку вниз, исправил в ней некоторые ошибки и собираюсь объединить ее обратно. Тем временем мой коллега создал новую ветку для другой функции:
A-B-C-D
/
D-E-F-G-H-I-J
\
A-B-C
Теперь мне нужно создать новую функцию, которая использует стили из новой ветки моего коллеги, но его новая ветвь требует гораздо больше работы, прежде чем она может быть объединена с разработкой, поэтому я разветвляюсь из его ветки чтобы воспользоваться его стилями и иметь последовательный взгляд, когда его вещи сливаются обратно в:
A-B-C-D
/
D-E-F-G-H-I-J
\
A-B-C..
\
A
Но нам действительно нужны некоторые из стилей, которые он разработал в своей другой ветке, поэтому я подумываю о перебазировании разработки в мою ветку, как только мы объединяем его другую ветку с разработкой:
branch 1: A-B-C-D
/ \
develop: D-E-F-G-H-I-J..
\ \
branch 2: A-B-C..\
\ \
branch 3: A-B..
Таким образом, моя ветка, над которой мне нужно поработать, будет иметь код, который мне нужен из обеих его ветвей, но будет переведена из разработки, чтобы, надеюсь, уменьшить конфликты. Меня беспокоит то, что он может столкнуться с множеством проблем, когда попытается объединить ветвь 2 с разработкой. Будет ли для него много конфликтов? Есть ли что-то лучшее, что мы можем сделать?