Вопрос 1:
Я бы сказал, что в любом случае все в порядке. По моему опыту что-то вроде этого обычно работает довольно хорошо:
- Когда вы объединяетесь с upstream / master в local / master, имеет смысл перебазировать local / dev.
- Сбрасывая dev, когда вы получаете изменения в master, вы уменьшаете размер слияния / ребазирования, который вы имели бы, когда вы хотите объединить dev обратно в master.
- Это работает до тех пор, пока вы всегда перебазируете изменения с мастера на dev
После того, как вы сделали с dev, вы можете либо выполнить ребазинг еще раз, а затем объединить с мастером, либо просто слить непосредственно с мастером. Вы можете изменить сообщение в коммите слияния, чтобы указать, что было в вашем слиянии.
Вопрос 2:
При слиянии из апстрима, если у вас нет каких-либо различий в вашем регионе или происхождении, слияния будут происходить быстро. Это в основном означает, что git просто накладывает коммиты из апстрима поверх того, что у вас было, и не будет никакого слияния конфликтов или чего-либо еще.
Из-за этого вам не нужно перебазировать или что-то еще. Как упомянуто выше, если вы работаете над чем-то в dev, может быть хорошей идеей будет перебазировать dev в этот момент, чтобы у вас было больше обновлений.
В тот момент, когда у вас есть изменения, которые отличаются от вышестоящих, у вас будет реальное слияние и возможность сделать ребаз, если вы того пожелаете.
Перебазировать или объединить?
Это в основном зависит от вас и от того, как вам нравится работать, но если вы подумываете о перебазировании, помните, что это меняет историю.
Если кто-то еще использует origin / master или origin / dev, и вы перебазируете его, возможно, они столкнутся с некоторыми проблемами при попытке объединить свою работу. Поэтому, как правило, если ветвь используется более чем одним человеком, вы должны использовать слияния. Никогда не используйте rebase (или что-либо еще, что изменяет историю), если ветвь использует более одного человека.