Git sqash и rebase рабочий процесс, с промежуточной и основной веткой - PullRequest
1 голос
/ 08 октября 2019

Есть много вопросов, касающихся «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? Что делать, если в него не вошла только одна ветвь функций, а две?

...