Как PR и слияние снова после возврата PR с помощью кнопки Github Revert

В основном я использовал Github вернуть кнопку, чтобы вернуть предыдущий PR для ветки в master, затем Я решил объединить ту же самую ветвь функции, которую я вернул ранее, но я не смог этого сделать. Шаги, как следует:

  • PR для объединения ветки в master
  • Отменить слияние PR из (master)
  • Попробовал создать новый PR, чтобы снова объединить ветвь функции в master.
  • Получено это сообщение:

Нечего сравнивать.

master обновляется, все транзакции происходят из ветки свойств. Попробуйте переключить базу для сравнения.

Любые предложения о том, как я могу снова объединить ветвь свойств в master

Ответ 1

Просто верните возврат. Таким образом, нажав кнопку возврата, вы создадите новый PR (ваш шаг 2). После того, как это будет объединено, у вас будет возможность отменить это, что создаст новую ветку со всеми вашими изменениями. Затем вы можете потянуть ее, внести в нее изменения (при необходимости) и создать новый PR. Вы потеряете все сообщения фиксации в Github, но все изменения файлов все равно будут. Хорошо ссылаться на свою оригинальную ветку и возвращаться в новый PR.

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

Ответ 2

Я знаю, что это старый, но если кому-то нужен хороший ответ здесь:

После того, как вы объединили PR и удалили скобку, а затем отменили это слияние, вы можете создать новую ветвь и затем отменить возврат. Нажмите это для удаленного репо и создайте новый PR.

Это создаст новый PR с одним коммитом с именем 'revert "revert # 123 blabla"' со всеми вашими изменениями в diff.

https://www.tildedave.com/2012/11/24/reverting-a-github-pull-request.html

Ответ 3

Причина, по которой вы не можете автоматически объединиться, заключается в том, что база ветки не синхронизирована с HEAD ведущей ветки.

Отказ от возврата может стать грязным, а иногда и прозрачным.

Кроме того, возврат возвращаемого значения предотвратит слияние других ветвей с этим кодом.

Допустим, у вас есть функция x на master и объединена с веткой y. то вы решаете, что у мастера не должно быть функции x, объединенной в нее, поскольку она зависит от ветки y. Итак, вы возвращаетесь к мастеру. Когда вы пытаетесь объединить ветвь x, команда git -merge видит исходное слияние и счастливо объявляет, что все хорошо, а ветки уже объединены, опустив эти фиксации для функции x, даже если вы хотели, чтобы они слились с ветвью y.

Вы должны вытащить самого последнего мастера, переустановить свою ветку на мастер, а затем вы сможете сделать еще один запрос на растяжение.

Ответ 4

Я пишу этот ответ, так как столкнулся с этой проблемой, и нашел ответы здесь скорее теоретическими, чем практическими. Я немного больше занимался серфингом и нашел метод решения этой проблемы. Более подробный ответ вы можете найти в статье здесь.

Чтобы решить эту проблему, вы должны создать новую ветку, отслеживающую мастер, и отменить фиксацию возврата. Затем оформите оформление ветки и объедините новую ветку. Теперь вы можете разрешать конфликты (если они есть), фиксировать и создавать новый PR.

Вот команды:

# do the needed changes in the feature branch
$ git commit -m "fixed issues in feature-branch'

# create new branch tracking master branch
$ git checkout -b revert-the-revert-branch -t master

# revert the reversion commit
# find it from your git log
# in linux try: 'git log | grep revert -A 5 -B 5'
$ git revert <revert-commit-hash>

# checkout the original feature branch
$ git checkout feature-branch

# merge the revert branch
$ git merge revert-the-revert-branch

# handle merge conflicts and commit and PR