Git: Как вернуть мою локальную ветку в состояние удаленной ветки? - PullRequest
4 голосов
/ 21 марта 2012

Я испортил свою локальную ветвь проекта, и я хочу вернуть свою локальную копию в удаленное состояние.Как мне достичь этой простой цели?

Ответы [ 5 ]

8 голосов
/ 19 декабря 2012

Если вы не боитесь потерять какую-либо локальную историю, вы можете переключиться на другую ветку, затем удалить свою локальную ветку и проверить удаленную версию.Например, если вы хотите отменить ветвь с именем «test_feature», вы можете сделать это:

$ git checkout master
$ git branch -D test_feature # see note about -D below
$ git checkout test_feature  # should track origin/test_feature

ПРИМЕЧАНИЕ: -D принудительно удалит ветку и отменит предупреждения о неотложенных изменениях.

Это полезно, если вы слили ветвь, которую вы не собирались, так как указатель HEAD может меняться в зависимости от типа слияния.

РЕДАКТИРОВАТЬ : ДругоеЧтобы сделать то же самое, просто наберите:

git reset --hard origin/test_feature

Это вернет ветку, в которой вы находитесь, в состояние удаленной (в данном случае, источника) ветки test_feature.

@ hvgotcodes имеет вариант этого в своем примере (он нацелен на коммит HEAD)

2 голосов
/ 22 июля 2015

Ни один из других ответов на самом деле не отвечает на вопрос, заданный ОП. Вот как вы «возвращаете [вашу] локальную копию в удаленное состояние»:

# get the latest from remote repo
git fetch origin
# set current branch to exact state of remote branch
git reset --hard origin/my_branch_name
2 голосов
/ 21 марта 2012

вы можете сбросить с помощью

git reset --hard HEAD

вы потеряете все свои изменения, если вы сделаете это. Это может быть полезно .

0 голосов
/ 07 января 2018

Если вы хотите вернуться к удаленной ПОСЛЕДНЕЙ версии :

git fetch --all
git reset --hard origin/master

Если вы хотите вернуться к определенной версии :

Сначала получите строку, которая идентифицирует фиксацию за определенную дату, выполнив:

git rev-list -n 1 --before="2009-07-27 13:37" origin/master

, она напечатает идентификатор фиксации, возьмите строку (например, XXXX) и выполните:

git checkout XXXX
0 голосов
/ 21 марта 2012

Есть один простой способ сделать то, что вы просите, но обычно, когда я чувствую, что «испортил ветку», а не то, что на пульте, я использую интерактивный переход, что дает мне немного больше контроля.Таким образом, я могу редактировать коммиты, если это необходимо, или удалять строки, если я просто не хочу коммит.Смотрите здесь: http://book.git -scm.com / 4_interactive_rebasing.html

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