181

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

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

5 ответов5

251

Как упоминается в ответе 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 является необязательным.

81

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

git checkout -B master origin/master

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

29

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

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

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

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

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

14

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

git reset --hard origin/master

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

-2

Вы уже мастер. Вы хотите удалить удаленный источник, чтобы git pull ничего не делал. Так

git remote rm origin

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .