Могу ли я сделать следующее проще?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Могу ли я сделать следующее проще?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Как упоминается в ответе KindDragon , вы можете воссоздать 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 является необязательным.
Git поддерживает эту команду:
git checkout -B master origin/master
Проверьте ветку origin/master
и затем сбросьте master
ветку там.
Я думаю, что даже ответ VonC имеет сложность по сравнению с этим вариантом:
git update-ref refs/heads/master origin/master
git reset --hard master
git автоматически регистрирует каждое значение ref (через reflog). Поэтому после выполнения этой команды master@{1}
ссылается на предыдущее значение master.
Ответ VonC правильный, но он тратит время на извлечение старого значения master в файловую систему.
Если вам небезразличны осиротевшие объекты в репозитории, вы можете запустить git gc
Если вы уже являетесь master
вы можете сделать следующее:
git reset --hard origin/master
Он будет указывать на локальную ветку master
на удаленный origin/master
и отменять любые изменения в рабочем каталоге.
Вы уже мастер. Вы хотите удалить удаленный источник, чтобы git pull
ничего не делал. Так
git remote rm origin
Затем вы можете добавить текущий репозиторий в качестве источника к удаленному репозиторию, если захотите.
NB. Если локальный приоритет впереди удаленного, ваше решение уничтожит локальные изменения!