Как получить свежую копию ветки из удаленного репозитория? - PullRequest
60 голосов
/ 14 апреля 2011

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

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

Ответы [ 2 ]

88 голосов
/ 14 апреля 2011

Как прокомментировал Джефроми,

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

4 голосов
/ 16 декабря 2015

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

git checkout master
git reset --hard origin/master

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

git clean -xfn # dry run with -n

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...