git - переместить ветку "tag" в другой коммит? - PullRequest
5 голосов
/ 02 марта 2012

Поскольку ветвь является более или менее только тегом, который автоматически перемещается в новый коммит, мне интересно, могу ли я изменить этот «тег».

Пример:

             master  
A -- B -- C -- D

git checkout master будет таким же, как git checkout D

Могу ли я сменить мастера, чтобы он указывал на коммит B?

   master
A -- B -- C -- D

git checkout master теперь будет таким же, как git checkout B

Вариант использования

Представьте, что кто-то выдвинул один коммит в онлайн-хранилище. Когда я делаю git fetch, я получаю этот коммит локальным, но моя основная ветвь все еще указывает на коммит ранее, а origin / master указывает на новый коммит. Я просто хочу переместить локальную основную ветвь в тот же коммит, на который указывает источник / мастер.

Так что мне не пришлось бы сливаться.

Спасибо за вашу помощь

Ответы [ 4 ]

8 голосов
/ 02 марта 2012

Повторно создайте ветку, чтобы указать на фиксацию

git branch -f master D

Использование git branch вместо git reset --hard даже сохраняет ваш рабочий каталог.

2 голосов
/ 02 марта 2012

Это должно работать:

git reset --hard origin/master
0 голосов
/ 24 мая 2018

Аннотация к решению Книттиса:

После вызова, чтобы воссоздать ответвление (master), чтобы указать на коммит

git branch -f branchname D

Не забудьте синхронизировать HEAD и фирменное имя (master) через:

git checkout branchname
0 голосов
/ 03 марта 2012

Я нашел другое решение для этого:

git fetch
git checkout origin/master
git branch -d master
git branch master

Это более логично для меня

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