Git Rebase или Merge после того, как новая ветка исправляет проблемы в основной ветке - PullRequest
0 голосов
/ 06 июня 2018

У нас есть основная ветвь с несколькими коммитами:

1 -> 2 -> 3 -> 4 -> 5 -> ..... -> 100

Этот мастер уже был развернут в производство.

Теперь мы обнаружили, что в версии 3 была введена ошибкасистема, приводящая к большему количеству исправлений в версиях 10, 15, 34, ..., в которых люди пытались решить проблему и создавали новые проблемы.

Так как некоторые из коммитов важны и поскольку мастер уже развернут, мы не можем просто сбросить обратно до версии 3.

Поэтому мы создали ветку из версии 2 (прямо передошибка) и поработали над тем, чтобы включить соответствующие функции, которые были зафиксированы:

1 -> 2 -> 3 -> 4 -> 5 -> ..... -> 100
      \
         A -> B -> C ...........- > Z

Теперь нам нравится брать версию Z и объединять / перебазировать ее как новейшую версию нашего мастера.Опять же, нам нравится хранить всю историю от 3 до 100.

Мы знаем, что один вариант - перебазировать А в версии 100, а другой - объединить Z в 100, но мы не уверены, что будетлучший подход в этом случае.

1 Ответ

0 голосов
/ 06 июня 2018

Почему бы не записать, что на самом деле происходит?Вы отказываетесь от серии 3..100 в пользу серии A..Z, поэтому запишите, что:

git tag -m "3 was so bad we abandoned the branch here" abandoned-master master
git checkout -B master better-version

производит

... 1---2---3 ... 100   abandoned-master
         \
          A---B ... Z   master

и если ваша производственная среда остается в здравом умеЖурналы того, какие коммиты были запущены в производство, любой, кто смотрит на них и в истории git, точно увидит, что произошло: коммиты 3,10,54,100 были запущены в производство, затем Z был запущен в производство.Совершенно ясно, что здесь произошло.

Добавление лжи

# as above, then
git merge -s ours -m "not really a merge, ^2 is abandoned history" master@{1}

... 1---2---3 ... 100     abandoned-master
         \           \
          A---B...Z---*   master

или перебазирование, которое еще более тщательно искажает историю, будет активно скрывать соответствующие факты.Никто, использующий фальсифицированные истории, не поможет.

...