ветку A. После чего в ветку девелоп влили еще пару веток. Далее, осознав, что ветки A еще не должно быть в девелопе, было принято решение сделать revert тех изменений, которые пришли в ветку девелоп при данном merge-коммите. Соответственно был сделан revert-коммит, который убрал эти изменения из дева.
Далее пришло время вливания ветки A в ветку девелоп, для этого сначала девелоп вливаем в A, а уже потом A в дев. Однако при мердже ветки A с девом в diff-е было видно, что мердж затирает те изменения, которая ветка A должна была отдать деву, т.к. пОздний коммит по этим изменениям находится в деве (тот самый revert-коммит). Соответственно пришлось смотреть какие изменения ветка A должна была привнести в девелоп и восстанавливать их самому при мердж коммите.
Вопрос: Как по-умному необходимо было решить данный кейс, чтобы избежать этого самостоятельного "восстановления" изменений, которые затерлись revert-коммитом ?
возможно, ребеизнуть ветку, дропнув лишние коммиты
Зачем вы деведоп в A вливаете?
Да, я слышал где-то, что это не очень хорошая практика. Не углублялся в вопрос, если честно, наверное, пришло время :) Зачем это делается ? Ну, например, ветка для фичи, отвлетвляется от девелопа, в ней реализуется фича, далее, когда приходит время, фичу нужно влить в девелоп. Сначала девелоп вливается в ветку (чтобы ветка получила недостающие изменения из дева) и потом уже ветка спокойно вливается в девелоп. Данный подход создает проблемы ?
Для этого придумали рибейз
Т.е. находясь на ветке фичи делаем rebase с девелопом, в ходе которого коммиты наших изменений станут "поверх" revert-коммита, из-за чего мы и получим такое состояние, когда наши текущие изменения останутся в ветке в ходе "объединения", нежели изменения, сделанные тем самым revert коммитом, верно ?
Угу, спасибо большое
Обсуждают сегодня