Подтвердить что ты не робот

Как получить новую копию ветки из удаленного репозитория?

Моя дружеская ветвь master, по-видимому, является катастрофой (на случайных merge и commit s, я думаю). Тем не менее, его ветки dev хороши, но содержат изменения, которые он не готов нажать на удаленный.

Какой лучший способ переопределить свою локальную ветвь master с удаленной ветвью master и получить новую копию (без переопределения его других ветвей)?

4b9b3361

Ответ 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 разрушен и воссоздан (т.е. вы не можете так легко отменить это, если это необходимо), и неясно, что здесь происходит. Кроме того, вам нужно иметь другую ветвь, к которой вы можете переключиться во время удаления и отдыха (но это было в исходном вопросе).

Ответ 2

Ответ Пайло Эбермана правильный:

git checkout master
git reset --hard origin/master

И добавьте это, если вы также захотите удалить необработанные файлы и проигнорированные файлы:

git clean -xfn # dry run with -n

Источник с дополнительной информацией: Как удалить локальные (не проверенные) файлы из текущего рабочего дерева Git?