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 не помог мне. Как это сделать?

Ответ 1

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

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

Ответ 2

git checkout phobos
git reset --hard origin/phobos

Это сообщает Git to reset главе phobos ту же фиксацию, что и origin/phobos, и обновить рабочее дерево для соответствия.