Git откроет старую ветку функций, включая любые другие ветви функций, кроме той, которая находится между - PullRequest
0 голосов
/ 25 октября 2018

У меня есть git timeline, например:

  1. master
  2. feature-1 -> merged (to master)
  3. feature-2 -> merged (tomaster)
  4. feature-3 -> merged (to master)

Все эти функции выполняются последовательно (первый элемент-1. После его завершения, затем объект-2 и т. д.on).

Feature-2 "конфликтует" с Feature-1.Конфликт не в смысле конфликта мерзавцев, а в особенности.

enter image description here

Теперь клиент решил, что он предпочитает Feature-1, поэтому нам нужно отозвать его обратно.из мертвых.

Какой самый безопасный и эффективный способ создать новую ветвь, которая включает в себя функцию-1 + что-нибудь еще в master (функция-3 в данном случае), исключая функцию-2?

Одна альтернатива, которую я придумаю:

  1. git checkout feature-1
  2. git checkout -b yeahbaby
  3. git merge feature-3

Но тогда вам нужно знать все ветки (в этом случае это просто, только функция-3).Но в действительности у вас их много.

РЕДАКТИРОВАНИЕ: кроме того, это не сработает ... потому что функция-3 основана на мастере, который содержит все изменения, сделанные в функции-2 (котораябыл объединен с мастером).

1 Ответ

0 голосов
/ 28 октября 2018

Не существует "самого безопасного способа" создания новой истории git, в которой отсутствует одна особенность из исходной истории.

Две наиболее вероятные возможности:

  • Создать веткуна master и git revert <commit_id> с любым коммитом, который вы хотите отменить (в идеале в обратном порядке).Это отменит сделанные в прошлом изменения настолько хорошо, насколько это возможно.Это относительно просто, но будет становиться все сложнее по мере того, как в прошлом обратные коммиты были
  • Создайте ветку на master, сделайте git rebase interactive <merge1_commit> и удалите все коммиты, которые вы хотите удалить.Это воспроизводит историю, и вы можете запускать тесты после каждой фиксации, чтобы убедиться, что каждый шаг действителен.Однако это сгладит историю, и вам, возможно, придется многократно исправлять коммиты слияния.

Вне git вы можете рассмотреть возможность добавления функции переключения для данной функции, так что все клиенты получают одинаковыекодовая база, но для некоторых клиентов функция будет отключена через конфигурацию.В некоторых случаях это облегчило бы движение вперед с двумя ветвями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...