Как сохранить код PR отдельно от кода PR другого филиала?

Я ищу помощь, связанную с git и GitHub. Я работаю над проектом, в котором я решаю различные проблемы и создаю PR. В прошлый раз, когда я решал две проблемы из одного репозитория, имея разные ветки для каждого PR, я столкнулся с тем, что в итоге смешал коды обоих PR друг с другом. Так что я не знаю, как сохранить разные PR-коды друг от друга.

Чтобы объяснить, что происходит:

Здесь вы начинаете:

* ----- * ----- *
                   origin/main

Вы делаете свои первые коммиты и оказываетесь в такой ситуации:

* ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- *
                   origin/main.                                           Feature A

Теперь вы создаете запрос на притяжение и готовы к следующей функции.

Если вы продолжите работать над этой веткой, новый PR будет содержать все изменения Feature A + все, что вы зафиксируете после:

* ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- *
                   origin/main.                                           Feature A.          FB

Вместо этого вам следует убедиться, что вы снова создали ветку для FB из origin/main. Есть много способов сделать это:

git reset origin/main --hard
git branch fb
git checkout fb

Или сделать все это одной командой:

git checkout -b FB origin/main

Таким образом, после добавления нескольких коммитов в FB вы получите следующее;

                          * ----- * ----- * ----- * FB
                         /
* ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * 
                   origin/main.                                           Feature A

Чтобы исправить текущее положение, вы можете пересохранить FA...FB в origin/main или создать новую ветку и отбирать коммиты после FA в свою новую ветку.

git rebase --onto origin/main fa fb

Или вы можете сделать интерактивный rebase, где вы сбрасываете коммиты между origin/main...FA.

git checkout -b fbfixed origin/main
git cherry-pick fa..fb

См. также:

Последним приемом будет интерактивный ребазинг FB:

git rebase -i origin/main..fb

В результате должен появиться список коммитов между origin/main и FB. Отметьте все коммиты после origin/main до FA включительно как drop, затем выполните rebase:

k 12344 FB
k 27362
k 37383
d nsnsnsn FA
d hshscd
d rnsees
d rhsnsn
d snrrirh
d rifitbrn
d usbrve

Это удалит коммиты FA из ветки FB. При этом исходный FA останется нетронутым.

Вернуться на верх