Переходимо в master і витягуємо останні зміни
git checkout master
git pullНа основі master створюємо новий тимчасовий бранч
git checkout -b temp_branchМерджимо в нього зміни з feature branch
git merge --squash <feature branch name>--squash бере всі зміни з бранча і готує до коміту, але не комітить
Можна перевірити, чи всі зміни пішли туди куди потрібно :)
git status
git diff --cachedПотім комітимо зміни. Пишемо нормальний коміт месидж
git commit Тепер потрібно переписати зміни в feature branch. Ми переходимо в нього і підміняємо коміти з тимчасового бранча
git checkout <feature branch name>
git reset --hard temp_branchТепер пушаємо бранч з опцією force для того щоб перетерти зміни на сервері. Це небезпечна штука, вона перетирає історію, тому перш ніж виконувати її бажано перевірити що буде пушатися
git push -nВ результаті має бути щось типу
To [email protected]:xmarket/xmarket-provisioning.git
! [rejected] feature_branch -> feature_branch (non-fast-forward)
error: failed to push some refs to '[email protected]:xmarket/xmarket-provisioning.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Бачимо, що пушається тільки feature_branch, тому можемо продовжувати
git push -f І видаляємо тимчасовий бранч
git branch -d temp_branch