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. Это действительно плохо? С какими проблемами это может привести? Есть ли лучший способ получить изменения от ветки исправления ошибок в ветки релиза?