Итак, у вас есть суперпроект в текущем каталоге и подмодуль в подкаталоге, давайте назовем его subm
:
.
|
`--subm
Вставить (извлечь и объединить) PR в подмодуль:
cd subm
git fetch origin pull/$id/head:pr-$id
git merge pr-$id
Я показал git fetch
и git merge
отдельно, чтобы подчеркнуть, что происходит слияние. На самом деле эти команды могут быть объединены в одну git pull origin pull/$id/head
.
Теперь у вас есть обновленный подмодуль. К сожалению, вы не можете вернуть его к origin
, поэтому ваши соавторы должны объединиться. Чтобы обойти эту проблему, вам нужно преобразовать подмодуль из его origin
в общий репозиторий, доступный вашей команде. Затем вы толкаете объединенную ветвь на развилку, и все ваши соавторы вытягивают из нее.
Когда субмодуль объединяет PR, вам больше не нужен форк. Вы удаляете ветвь, и вы и все соавторы обновляете подмодуль, используя git pull origin +master
.
При каждом изменении в подмодуле вам нужно зафиксировать изменение в суперпроекте:
cd .. # back to the root of the superproject
git add subm
git commit -m "Update subm"