Git: объединить только изменения, сделанные в ветке

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

20
задан Community 23 May 2017 в 11:55
поделиться