объединение, чтобы освоить две ветви с предыдущей общей историей - PullRequest
1 голос
/ 25 октября 2019

Я спрашиваю о проблеме, связанной с этим: https://github.com/git/git/blob/master/Documentation/howto/revert-a-faulty-merge.txt

У меня есть три ветви: master, A и B. Я слил B с A. Но позже это оказалось ошибкой, поэтому ясделал возврат этого слияния. Я знаю, что теперь невозможно выполнить еще одно слияние B с A (поскольку я могу потерять изменения от B до возврата), я должен сначала сделать возврат этого слияния, а затем слить B с A.

И вот идет мастер ... Что если после первого восстановления слияния кто-то слит с B, чтобы освоить, а затем с A, чтобы освоить? Или в обратном порядке? Будут ли изменения от B до первого возврата на мастере?

Кто-нибудь может мне помочь?

BR

1 Ответ

1 голос
/ 25 октября 2019

У вас есть эта история (время течет слева направо):

-o--o--o--o           <- master
  \
   a--a--a---M--R     <- branch A
    \       /
     b--b--b          <- branch B

R - это обращение их слияния M.

Что если после первогоВозврат слияния, кто-то слиться B, чтобы освоить, а затем A, чтобы освоить? Или в обратном порядке? Будут ли изменения от B до первого возврата на главном устройстве?

То есть вы получите эту историю:

-o--o--o--o--X----Y    <- master
 |          /     |
 |   b--b--b      |    <- branch B
  \ /       \    /
   a--a--a---M--R      <- branch A

Здесь первый B был объединен с master, затем A. Как вы можете видеть, обращение теперь является частью master, как и изменения, которые оно принесло, то есть оно отменяет изменения ветви B. Вы можете видеть, что X и все фиксации до, но исключая, Y имеют изменения ветви B, но Y и позже эти изменения отменяются.

Если, с другойhand, ветвь A сначала была объединена, затем ветвь B (а также ее аннулирование R) уже включены в объединение. git merge B скажет вам: «Уже в курсе».

...