#git #git-merge
Вопрос:
Я работаю над своей личной вилкой публичного репо Git. Я добавил несколько функций в отдельные ветви своей вилки (скажем, fork/feature1 и fork/feature2), для которых я отправил отдельные запросы на слияние (MRs) в вышестоящее репозиторий.
Теперь upstream требуется некоторое время, чтобы принять мою MRs (она поддерживается лишь эпизодически), и мне нужны все эти функции в моем приложении прямо сейчас. Мой вопрос в следующем: как мне безопасно применить эти изменения к мастеру моего форка (чтобы я мог использовать его в своем приложении), сохраняя при этом ветви функций и все еще имея возможность обновлять их, если этого требует вышестоящий сервер?
Моя основная идея заключалась бы в следующем: просто объедините вилку/особенность 1 и вилку/особенность 2 в вилку/мастер, но не удаляйте вилку/особенность 1 или вилку/особенность 2. Но что, если обсуждение в вышестоящем MR потребует, чтобы я изменил некоторые вещи в fork/feature1, чтобы его приняли? Затем мне нужно будет снова применить эти новые изменения к fork/master. В этом случае могу ли я просто снова объединить fork/feature1 в fork/master, даже если fork/master на несколько коммитов опережает fork/feature1, а более старая версия fork/feature1 уже была объединена ранее?
Ответ №1:
Я думаю, что лучшая стратегия здесь состоит в том, чтобы рассматривать каждую независимую функцию как отдельный «мини-продукт», который в конечном итоге доставляется (объединяется в восходящий поток) после проверки и приемочного тестирования. В любом случае, это похоже на то, что с точки зрения восходящего потока; им на самом деле наплевать на вашу раздвоенную главную ветвь, верно?
В этом случае вам придется поддерживать правильное состояние как основной ветви, так и функций вашего продукта(ов), точно так же, как ожидается, вы будете применять исправления для обеих develop
ветвей и master
ветвей с помощью Gitflow.
И да, вы действительно можете обойтись без отдельных ветвей исправлений. Вместо этого вы можете сначала «продвинуть» fork/feature1, а затем снова объединить эту ветвь в fork/master. Слияния связаны не с ветвями, а с коммитами и их иерархией.