Подтверждает из одного запроса тяги, показывая во втором
Я новичок в 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
Например, здесь.)