Как правильно сделать форк ещё несмерженной ветки?

Есть ветка master. Я сделал её форк feature_1, реализовал фичу и поставил merge pull request в master. Пока админ рассматривает PR, я хочу добавить ещё одну фичу, но она использует в себе код из feature_1. Как правильно форкаться и мержить в такой ситуации?

Ситуацию осложняет то, что после PR feature_1, но до PR feature_2, админ может принять чей-то чужой PR в master.


Ответы (1 шт):

Автор решения: Roman Konoval

Чтобы изменения из feature_1 были в feature_2 нужно либо создавать feature_2 напрямую от feature_1:

git checkout feautre_1
git checkout -b feature_2

либо создать ветку от master и потом слить feature_1 в feature_2:

git checkout master
git checkout -b feature_2
git merge feature_1

При создании PR есть два варианта:

  1. PR из feature_2 в feature_1
  2. PR из feature_2 в master

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

В первом случае более удобно делать инспекцию (code review), так как в PR видно только изменения сделанные непосредственно в feature_2, а изменения из feature_1 не показываются. Минус этого варианта в том, что после того как PR из feature_1 в master будет принят, нужно будет отредактировать PR из feature_2 изменив целевую ветку на master.

Во втором варианте есть неудобство инспекции PR пока не будет слита ветка feature_1, т.к. в feature_2 присутствуют изменения из feature_1 и пока feature_1 не слита в master эти изменения видно и в PR для feature_2. Но плюс в том, что не нужно делать дополнительных действий после принятия PR для feature_1.

Наличие других PR в master никак не влияет на процесс, разве что в них есть изменения конфликтующие с изменениями в feature_1 или feature_2. Если это случится, то о конфликтах интерфейс github сообщит и не даст принять PR. В таком случае сначала нужно залить master в feature_2 и разрешить конфликты перед тем так появится возможность принять PR.

→ Ссылка