Подтверждает из одного запроса тяги, показывая во втором

Я новичок в GitHub, и у меня есть проблема, что коммиты из первого запроса на получение показываются в последующем запросе на получение. То есть:

Запрос на извлечение 1 (PR1)

Я вижу коммиты:

  • pr1sha1
  • pr1sha2

Запрос на извлечение 2 (PR2)

Я вижу коммиты:

  • pr1sha1
  • pr1sha2
  • pr2sha1

Я не знаю, что случилось.

Почему коммиты из PR1 также появляются в PR2, и как я могу это исправить?

1 ответ

Решение

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

Один из вариантов - просто закрыть PR1 и объединить PR2 или просто объединить PR1 и затем PR2. Любой из этих вариантов будет в порядке. В дальнейшем я предполагаю, что по какой-то причине вы не можете этого сделать, и вам нужно, чтобы они были объединены в два отдельных PR.

Чтобы исправить это, вы должны интерактивно перебазировать ветку PR2 и "отбрасывать" коммиты, которые вам не нужны.

Я предполагаю, что вы находитесь на ветке pr2branch.

git rebase -i HEAD~~~~ 

Появится экран со списком коммитов, таких как:

pick pr2sha1 Commit message pr2sha1
pick pr1sha2 Commit message pr1sha2
pick pr1sha1 Commit message pr1sha1
pick 4dced1f Commit message 

Вы также должны увидеть инструкции внизу в комментариях. Вы должны прочитать эти инструкции.

В любом случае, поскольку вы хотите "отбросить" коммиты, относящиеся к PR1, вы должны изменить текст на:

pick pr2sha1 Commit message pr2sha1
drop pr1sha2 Commit message pr1sha2
drop pr1sha1 Commit message pr1sha1
pick 4dced1f Commit message 

Затем сохраните это, а затем обновите PR:

git push origin pr2branch --force

Подробнее об интерактивном перебазировании см., Например, здесь.

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

(Если основная ветка называется master, а новая ветка для вашего второго PR - new-pr-branch.)

git checkout master
git pull
git checkout -b new-pr-branch

(Хотя некоторые люди рекомендуют не использовать git pullНапример, здесь.)

Другие вопросы по тегам