Как правильно сделать форк ещё несмерженной ветки?
Есть ветка master. Я сделал её форк feature_1, реализовал фичу и поставил merge pull request в master. Пока админ рассматривает PR, я хочу добавить ещё одну фичу, но она использует в себе код из feature_1. Как правильно форкаться и мержить в такой ситуации?
Ситуацию осложняет то, что после PR feature_1, но до PR feature_2, админ может принять чей-то чужой PR в master.
Ответы (1 шт):
Чтобы изменения из 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 есть два варианта:
- PR из
feature_2вfeature_1 - 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.