Как сохранить код 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 останется нетронутым.