Іноді QA (або staging) branch настільки обростає експериментами, що простіше не намагатися розрулити всі конфлікти, а просто зробити його точною копією main (master).
Для цього достатньо двох команд:
git reset --hard origin/main
git push --force-with-lease
Приклад:
git reset --hard origin/main
HEAD is now at 46911f2 Fixed main page search
git push --force-with-lease
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To https://github.com/username/sandbox.git
+ 53cda29...46911f2 staging -> staging (forced update)
Що відбувається:
- git reset --hard origin/main повністю переводить поточну локальну гілку на той самий коміт, що й origin/main. Усі локальні коміти та незбережені зміни буде втрачено.
- git push --force-with-lease оновлює віддалену QA/Staging-гілку, роблячи її точною копією main.
Чому саме --force-with-lease, а не --force?
Тому що ця команда трохи безпечніша. Git перевіряє, що ніхто не встиг запушити нові коміти після вашого останнього fetch. Якщо віддалена гілка змінилася, push буде відхилено замість того, щоб мовчки затерти чужу роботу.
⚠️ Робіть це лише тоді, коли дійсно хочете повністю перезаписати історію QA/Staging-гілки. Після такого push усі коміти, яких немає в main, перестануть бути частиною цієї гілки.
GUI застосунки типу Github Desktop можуть не відобразити ці зміни. Можливо треба буде перезавантажити застосунок або "пострибати" між гілками, щоб зміни підтягнулися.