32 подписчика
Gitflic - принудительная перезапись локальной ветки master (git pull --all -force)
git fetch --all
git branch backup-master
git reset --hard origin/master
git pull --all
Пояснение:
# Загружает все изменения из всех удалённых репозиториев (например, origin),
# но не сливает их в локальные ветки — только обновляет ссылки вроде origin/master
git fetch --all
# Создаёт новую локальную ветку 'backup-master', указывающую на текущее состояние HEAD
# (обычно это текущая ветка, например, master или main — будьте осторожны: если вы не на master,
# backup-master сохранит не master, а текущую ветку!)
git branch backup-master
# Безоговорочно сбрасывает текущую ветку (HEAD) на состояние удалённой ветки origin/master:
# все локальные коммиты, не попавшие в origin/master, будут потеряны (если не сохранены в другой ветке)
git reset --hard origin/master
# Выполняет 'git fetch --all' (уже было выше) + пытается сделать 'merge' для всех отслеживаемых веток.
# Однако флаг --all у 'git pull' не делает merge всех веток — он fetch’ит все удалёнки и затем
# делает pull *только для текущей ветки*. Остальные ветки не обновляются автоматически.
# Чаще всего это избыточно после fetch + reset — особенно если цель была синхронизироваться с origin/master.
git pull --all
Заметка:
git branch backup-master создаёт ветку от текущего HEAD, а не от master, если вы сейчас не на master.
Чтобы гарантированно сохранить старое состояние master, лучше сделать:
git branch backup-master master # явно от ветки master
1 минута
13 ноября 2025