git status git branch -a git remote -v ( показывает настроенные удаленные репозитории (remote) и их URL, origin — имя удаленного репозитория (по умолчанию)) Две строки означают: (fetch) — URL для получения изменений (git fetch, git pull) (push) — URL для отправки изменений (git push) Что это означает: Удаленный репозиторий называется origin Он указывает на https://github.com/kureinmaxim/BOMCategorizer.git Один и тот же URL используется для fetch и push git fetch Загружает изменения из удаленного репозитория в локальный Не изменяет рабочую директорию и текущую ветку Обновляет только удаленные ветки (например, origin/main) Безопасна: можно посмотреть изменения перед слиянием Пример: git fetch origin # После этого вы можете посмотреть изменения: git log HEAD..origin/main # посмотреть новые коммиты git diff HEAD origin/main # посмотреть различия git pull Выполняет git fetch + git merge (или git rebase, если настроено) Загружает изменения и сразу сливает их в текущую ветку Может изменить рабочую директорию и создать merge commit Может вызвать конфликты, которые нужно разрешить Пример: git pull origin main# Эквивалентно:git fetch origingit merge origin/main Практическое применение: git push origin experimental/new-feature — отправит изменения в ветку experimental/new-feature на GitHub git pull origin main — получит изменения из ветки main с GitHub git fetch origin — получит информацию о всех ветках с GitHub без слияния 1) Вариант Для синхронизации main с GitHub: git checkout main git pull origin main # Это обновит локальную ветку main изменениями с GitHub. 2) Получаю последние изменения с GitHub и проверяю различия: git fetch origin git checkout main git status (это если нет конфликтов) => то все И далее После этой последовательности git status покажет состояние. Дальше зависит от вывода: Сценарий 1: Всё синхронизировано Если git status показывает: On branch main Your branch is up to date with 'origin/main'.nothing to commit, working tree clean Тогда всё готово — локальная main синхронизирована с GitHub. Сценарий 2: Локальная ветка отстаёт Если git status показывает: On branch main Your branch is behind 'origin/main' by 2 commits, and can be fast-forwarded.nothing to commit, working tree clean Нужно применить изменения: git pull origin main # или git merge origin/main Сценарий 3: Есть локальные изменения Если git status показывает: On branch main Your branch and 'origin/main' have diverged, and have 1 and 2 different commits each, respectively. Нужно решить, как объединить изменения (merge или rebase). Сценарий 4: Есть незакоммиченные изменения Если git status показывает: On branch main Changes not staged for commit: modified: config.json Сначала закоммитьте или отложите изменения (stash), затем синхронизируйте. # 1. Сохранить текущие изменения git stash # 2. Переключиться на другую ветку и поработать git checkout main git pull origin main # 3. Вернуться обратно и применить сохраненные изменения git checkout experimental/new-feature git stash pop # или git stash apply Рекомендуемая последовательность: git fetch origin # загрузить информацию об изменениях git checkout main # переключиться на main git status # проверить состояние# Если "behind" - выполнить: git pull origin main # применить изменения Итог: если git status показывает "up to date" и "working tree clean" — всё готово. Если есть "behind" — выполните git pull origin main. Удаляю локальную и удаленную ветку experimental/new-feature, оставляя только main. git branch -d experimental/new-feature git push origin --delete experimental/new-feature Обновляю ссылки на удаленные ветки, чтобы убрать устаревшие записи: git fetch origin --prune Проверить результат: git branch -a