Ответ 1
Как заметил Jefromi,
git checkout master
git reset --hard origin/master
делает правильную вещь: установка мастера в исходное состояние. (Если вы уже находитесь на ветке master
, вы можете опустить первую команду.) Это также оставляет целостность ветки.
Старый нижний ответ:
git checkout dev
git branch -D master
git checkout master
Это переключается на другую ветку ( "dev" в этом случае - выберите любую другую ветвь, которую вы могли бы), удаляет локальную ветвь master
, а затем воссоздает ее из remotes/origin/master
(которая может не работать в зависимости от ваших настроек и Git). Последняя команда часто эквивалентна
git checkout -b master remotes/origin/master
По сравнению с новым ответом выше это имеет тот недостаток, что reflog разрушен и воссоздан (т.е. вы не можете так легко отменить это, если это необходимо), и неясно, что здесь происходит. Кроме того, вам нужно иметь другую ветвь, к которой вы можете переключиться во время удаления и отдыха (но это было в исходном вопросе).