Git: Что делать, если одна ветка еще не слита в master, но от неё зависит другая ветка?
Пятница, вы кидаете PR ветки feature/a, но хотите на выходных чуть-чуть поработать. У коллег выходной, а изменения нужны вам для продолжения работы. Как быть? Можно, конечно всю фичу делать в одной ветке, но это плохая практика и для удобства команды лучше пилить мелкие фичи. Поэтому давайте рассмотрим другой вариант.
Для того, чтобы не ждать аппрува, необходимо создать ветку feature/b от ветки feature/a:
git checkout feature/a git checkout -b feature/b
Если на ветке feature/a будут вноситься какие-либо изменения по мере прохождения ревью, можно каждый раз делать rebase:
git checkout feature/a git pull feature/a git rebase feature/a feature/b
Если ветка уже была влита в trunk, вносим изменения trunk в feature/b:
git rebase --onto trunk feature/a feature/b
Это команда переключается на ветку feature/b и вносит в trunk все изменения feature/b без изменений ветки feature/a.
Если ветку feature/a решили вообще не сливать, а просто отказаться от этой фичи, но при этом feature/b влить нужно, в этом случае необходимо создать новую ветку, перенести в неё коммиты feature/b:
git checkout -b feature/b-2 git cherry-pick <хэш коммитов через пробел>
Затем нужно вручную удалить участки кода, которые зависели от feature/a.
По материалам stackoverflow