Нет коммитов для слияния в запросе Git - PullRequest
0 голосов
/ 29 августа 2018

Я слил ветку, допустим, developer, в другую ветвь, скажем, main.

Затем я понял, что изменения из developer не должны быть доступны в main.

Я использовал опцию remove branch, которая создала запрос на слияние, исключая мои изменения из ветви main. Я объединил этот запрос, и ветвь main больше не содержала изменений с developer, тогда как ветвь developer осталась прежней.

Однако через несколько дней я хочу, чтобы эти изменения были доступны в main, я попытался создать новый запрос на слияние с developer до main. Этот запрос не отображает коммитов для объединения.

Возможно, коммит ранее был объединен с веткой main, и Git теперь не распознает их как новый коммит (хотя они были отменены).

Как можно теперь объединить изменения, доступные в developer, с 'main`?

1 Ответ

0 голосов
/ 29 августа 2018

Шаги, которые вам придется предпринять, могут быть кратко изложены следующим образом (обратите внимание, что сначала я опишу способ, которым вы, вероятно, хотите это сделать, а затем опишите шаги, которые обязательны ):

Вот как вы должны это сделать:

  1. Из main создайте и извлеките новую временную ветвь для стабилизации слияний

    git checkout main
    git checkout -b temp-merges
    
  2. Отменить ваш возврат, в этой новой ветви

    git revert SHA-OF-PREVIOUS-REVERT
    
  3. Если у вас есть дальнейшие изменения в разработчике после первоначального слияния, вы также можете объединить разработчика с этой новой временной веткой

    git merge developer
    
  4. Убедитесь, что конечный результат удовлетворяет любым критериям приемлемости, таким как выполнение модульных тестов, сборка кода, отсутствие конфликтов слияния и т. Д.
  5. Наконец, объединить временную ветвь с основной, приняв результаты

    git checkout main
    git merge temp-merges
    
  6. Удалить временную ветку

    git branch -d temp-merges
    

Теперь это позволяет проверить результаты перед окончательным слиянием с основной.

Перед окончательным слиянием вот как будут выглядеть ваши ветки

        developer
            v
1--2--3--4--5--------------------+
       \                          \
        \                 (-(-D))--G 
         \               /         ^
          \             /      temp-merges
  A--B--C--D--(-D)--E--F
                       ^
                      main

Если вам не нужно делать это, или вы можете сделать это локально на главной ветке перед нажатием, необходимые шаги просто:

  1. Отменить возврат на основной ветке

    git revert SHA-OF-PREVIOUS-REVERT
    
  2. Если у вас есть дальнейшие изменения в разработчике после первоначального слияния, вы также можете объединить разработчика с основной веткой

    git merge developer
    
  3. Проверьте, если необходимо


Если ваша ситуация такова, что у вас нет изменений на разработчике после первоначального слияния, вам нужно только сделать это:

  1. Отменить возврат на основной ветке

    git revert SHA-OF-PREVIOUS-REVERT
    

и назовите это днем.

...