Есть много вопросов, касающихся «Git Workflow and Rebase» в SO, однако я не смог найти ни одного, который бы разрешил эту проблему: мы работаем с веткой master
, которая развернута в рабочей среде, но также staging
ветвь, которая развертывается на тестовом сервере.
Большинство учебников, напр. этот , объясните, как создать ветку объекта, если есть несколько коммитов, раздавить их, а затем перебазировать поверх master
и, наконец, объединить эту ветку в master
.
Это выглядело бы примерно так:
git checkout -b featureX # create feature branch
# do work on feature branch
git add .
git commit -m "commit 1"
git add .
git commit -m "commit 2"
git rebase -i HEAD~2 # squash into 1 commit
git checkout master
git pull origin master # update master
git checkout featureX
git rebase master # rebase onto master
git push origin featureX
git checkout master
git merge featureX # merge feature
git push origin master
Как бы выглядел этот рабочий процесс, если бы мы сначала хотели объединить нашу функциональную ветвь с staging
, протестировать ее там и только еслион работает нормально, слить его в master
?
Должны ли мы сначала сделать ребазу поверх staging
, слиться с ней, протестировать ее, следующую ребазу поверх мастера, а затем слить? Если это так, значит ли это, что мы должны периодически удалять staging
и снова разветвлять его master
, чтобы сохранить чистую ветку staging
? Что произойдет, если мы уже слили что-то в staging
, обнаружим, что что-то не работает и нужно внести изменения в нашу ветку функций? Мы бы снова раздавили эту ветку, но теперь у staging
уже есть старая версия ветки функций, которая должна быть объединена, нужно ли в этом случае удалять staging
и снова разветвлять ее из master? Что делать, если в него не вошла только одна ветвь функций, а две?