Предположим, разраб месяц ничего не коммитил. Вдруг он решил сделать коммит, а затем сделать push в remote-репозиторий, при этом не делая предварительно pull из remote-репозитория. В этот момент Fork app возвращает ошибку, что кто-то уже сделал коммит до вас в remote-репозитория. Разраб увидит такую картину. «Добавил .gitignore» - локальная ветка «Поправил namespace» - remote-ветка. ![Merge vs Rebase](Merge%20vs%20Rebase.png) Нам нужно слить в одну две ветки. Это можно сделать с помощью Merge или Rebase. **Merge** - Две ветки сливаются в одну, старая ветка остается в истории. **Rebase** - Все коммиты одной ветки переносятся в другой и ставятся в конец. ![Merge vs Rebase-1](Merge%20vs%20Rebase-1.png) ### Как правильно сделать rebase Что делает выбранная опция на скриншоте. Опция перенесет текущую ветку (выделена жирным) в ту, на которую мы нажали ПКМ. ![Merge vs Rebase-2](Merge%20vs%20Rebase-2.png) В итоге получим такой результат. ![Merge vs Rebase-3](Merge%20vs%20Rebase-3.png) ### Как правильно сделать rebase (часть 2) Сам методом тыка. Если нам нужно ветку ECS слить в main через rebase. Здесь опечатка. Я хотел показать, как второстепенную ветку закинуть в основную. А показал наоборот. Шаг 1 ![](Merge-vs-Rebase-4-Запись-экрана-2023-04-28-в-15.27.17.mov) Шаг 2 Если есть незаконченные изменения, то галка уберет изменения в stash (иначе, полагаю, будет удаление изменений) ![Merge vs Rebase-4](Merge%20vs%20Rebase-4.png)