Вопрос Как сбросить «master» в «origin / master»?


Могу ли я сделать следующее более простым способом?

git checkout origin/master
git branch -D master
git branch master
git checkout master

151
2018-04-20 10:34


происхождения


Иногда это можно сделать, не касаясь рабочего дерева: stackoverflow.com/a/12343727/586086 - Andrew Mao
Обновите принятый ответ: @ Ответ KindDragon исправлен и короче. - Robert Siemer


ответы:


В виде KindDragon«s ответ упоминает, вы можете воссоздать master прямо на origin/master с:

git checkout -B master origin/master

git checkout справочная страница  отмечает:

Если -B дано, <new_branch> создается, если оно не существует; в противном случае он сбрасывается, Это транзакционный эквивалент

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

Первоначально предлагалось:

Что-то вроде:

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

причем шаг 2 является необязательным.


209
2018-04-20 11:22



Вы можете сделать это с одной строкой. - Robert Siemer


Git поддерживает эту команду:

git checkout -B master origin/master

Проверьте origin/master ветвь, а затем сбросить master ветвь там.


69
2017-08-24 19:30



Единственный верный ответ. - Robert Siemer
сохраните четыре нажатия клавиш - вам не нужны кавычки. Просто: git checkout -B master origin / master - zumalifeguard
скажем, я совершил 2 вещи, первый из них - слияние с веткой, а второй - регулярный. Что произойдет с слиянием, если я вернусь к происхождению / мастеру? - utdev
вам не нужно git fetch origin master прежде чем быть уверенным origin/master обновляется? - pedrozath
Да, конечно, со всеми решениями, которые вы должны сделать git fetch первый - KindDragon


Я думаю, что даже ответ VonC имеет сложность по сравнению с этим вариантом:

git update-ref refs/heads/master origin/master
git reset --hard master

git автоматически регистрирует каждое значение ref (через reflog). Итак, после того, как вы запустите эту команду, master@{1} относится к предыдущему значению мастера.

Ответ VonC верен, но он тратит время на проверку старого значения мастера в файловой системе.

Если вы заботитесь о потерянных объектах в репо, вы можете запустить git gc


28
2018-01-23 20:48



Звучит интересная альтернатива. +1 - VonC
Я до сих пор Already on 'master' - yourfriendzak
@yourfriendzak, я забыл об учете того, что у вас уже есть мастер, проверенный до обновления мастера. Я обновил ответ так, чтобы он работал даже в этом случае. - Alexander Bird
Это работает, даже если вы не на хозяине (например, отдельно стоящее состояние HEAD, которое фактически указывает на начало / мастер наконечника). Затем вы можете проверить мастер без необходимости перебрасывать старые файлы через репо. Большой! - Andrew Mao


Если вы уже находитесь master вы можете сделать следующее:

git reset --hard origin/master

Он укажет местный master ответвление на удаленный origin/master и отказаться от любых изменений в рабочем каталоге.


11
2018-06-25 15:47



И удалит файлы! Если вы создали / отредактировали файлы и запустили «git add», эта команда удалит их. Имейте в виду. - Cheeso


Вы уже хозяин. Вы хотите удалить удаленное git pull ничего не делает. Так

git remote rm origin

Затем вы можете добавить текущий репозиторий в качестве источника в удаленный репозиторий, если вам это нравится.

NB: Если локаль опережает дистанционное решение, ваше решение уничтожит локальные изменения!


-1
2018-01-28 03:04



Этот ответ не имеет смысла. - ADTC
Это прямо вводит в заблуждение и может повредить людям проекта. - Wisienkas
Это неправильно. Я не уверен, почему у вас был высокий уровень. - Saher Ahwal