G---H // Release Branch / / A---B---E---F--- // master \ \ C---D--- // bug fix branch
Исходя из наших конкретных потребностей в нашем проекте, описанный выше сценарий довольно часто встречается. У нас есть ветка master / dev с некоторыми коммитами. Затем мы получаем отчет об ошибке и начинаем исправлять его в ветке с ошибками (коммиты C и D выше).Тем временем в ветке dev происходит больше коммитов. Затем нам говорят, что нам нужно создать выпуск для клиента, который не может включать изменения, внесенные коммитами B, E и F выше, но он должен включать исправление ошибки.
Таким образом, мы разветвляемся от dev до того, как изменение B когда-либо было применено, но как лучше всего добавить исправление ошибки и в эту ветку выпуска? Если я выполню слияние ветки, она будет включать изменение, внесенное в B, которое мне не нужно. Я мог бы выполнить выборку коммитов C и D, но я читал, что выбор вишни не всегда является хорошей идеей на основе этого ответа в основном потому, что мое репо будет выглядеть так:
G---H---C'---D'--- // Release Branch / / A---B---E---F--- // master \ \ C---D--- // bug fix branch
Итак, C 'и D 'выглядят как совершенно новые коммиты с разными идентификаторами sha-1, как C и D. Неужели это плохо? К каким проблемам это может привести? Есть ли лучший способ перенести изменения из ветки исправления ошибок в ветвь выпуска?