2010-03-01 5 views
77

У меня есть ветка локальной темы, которая отслеживает удаленную ветку. Ради аргумента, говорят совершающие истории выглядеть следующим образом:Git: Отменить все изменения в расходящейся локальной ветке

A--B--C--O1--O2--O3 (origin/phobos) 
     \ 
     L1--L2--L3 (phobos) 

Взглянув на относительную фиксации истории, теперь я хочу, чтобы отменить все изменения в местном phobos отрасли и получить его обратно, чтобы быть прямым копия origin/phobos, так что локальная история выглядит следующим образом:

A--B--C--O1--O2--O3 (phobos origin/phobos) 

Я действительно не хочу, локальные изменения в phobos отрасли, и я действительно не хочу никаких слияний, чтобы показать в хранилище происхождения после этого. (Итак, просто слияние - это не то, что я имею в виду.)

Кажется, что это должно быть очень просто, но мой google-fu не смог меня. Как мне это сделать?

ответ

60

Удалить ветку, а затем заново создать его:

$ git branch -D phobos 
$ git checkout --track -b phobos origin/phobos 
+0

Awesome. Это сработало отлично. –

+25

Проблема с этим подходом и сбросом головки ветви, заключается в том, что удаление ветви сбрасывает рефлок ветви. Сброс ветви, с другой стороны, не только сохраняет reflog, но и фактически записывает сброс в reflog. Это делает операцию легко обратимой позже, если это необходимо. –

+5

@Electrons_Ahoy Предлагаю вам изменить принятый ответ здесь на Дэна (чтобы люди, подобные мне, у которых Google Googled, как это сделать, скорее всего, будут выбирать более безопасный метод). –

219
git checkout phobos 
git reset --hard origin/phobos 

Это говорит Git, чтобы сбросить главу phobos к тому же, как совершить origin/phobos и обновить рабочее дерево, чтобы соответствовать.

+24

ИМО это должен быть принятый ответ; он выдает команду «reset» для пересадки указателя на ветку вместо выполнения операции с удалением/воссозданием. – vdboor

+0

На самом деле, я попробовал это сначала, и он выбросил массу ошибок, сделанных локальной копией, почти непригодной для использования. Удалить/воссоздать, возможно, было менее элегантно, но мне не пришлось задавать никаких последующих вопросов. –

+3

@Electrons_Ahoy: Хм, это определенно не нормально. Выполнение этого сброса обычно должно быть беспроблемной операцией, если ваше репо находится в хорошем рабочем состоянии. –

Смежные вопросы