Перезаписать мою локальную ветку удаленной веткой - PullRequest
156 голосов
/ 03 июня 2011

У меня полностью есть fubar'd в моем местном отделении, и я хотел бы начать все сначала.Версия на сервере правильная.

Я не хочу начинать все сначала, я бы хотел использовать свою локальную историю, чтобы исправить мою огромную ошибку.(Могу, если придется).

git fetch branchname, а git pull branchname не работают.Я получаю сообщение « до », однако моя локальная версия не соответствует версии сервера.

git pull origin/branchname выдает ошибку " not found ".

Ответы [ 4 ]

236 голосов
/ 03 июня 2011

сначала создайте новую ветку в текущей позиции (на случай, если вам нужна старая «испорченная» история):

git branch fubar-pin

обновить список удаленных веток и синхронизировать новые коммиты:

git fetch --all

затем сбросьте вашу ветку до точки, где источник / ветвь указывает на:

git reset --hard origin/branch

будьте осторожны , это удалит все изменения из вашего рабочего дерева !

55 голосов
/ 15 сентября 2012

Что я делаю, когда путаюсь с моей локальной веткой, я просто переименовываю свою сломанную ветку и снова проверяю / разветвляю ветку upstream:

git branch -m branch branch-old
git fetch remote
git checkout -b branch remote/branch

Тогда, если вы уверены, что ничего не хотите от старой ветки, удалите ее:

git branch -D branch-old

Но обычно я оставляю старую ветку на месте, на случай, если у меня там что-то есть.

3 голосов
/ 03 июня 2011

В вашем местном филиале, вероятно, есть изменения, которые вы хотите отменить.Чтобы сделать это, вам нужно будет использовать git reset для сброса заголовка ветки до последней точки, которую вы отклонили от ветки репо вышестоящего репо.Используйте git branch -v, чтобы найти идентификатор sha1 восходящей ветви, и сбросьте его, используя git reset SHA1ID.Тогда вы сможете выполнить git checkout, чтобы отменить изменения, оставленные в вашем каталоге.

Примечание: всегда делайте это в резервном хранилище.Таким образом, вы можете быть уверены, что вы работаете правильно.Или, если это не так, у вас есть резервная копия, к которой можно вернуться.

1 голос
/ 16 ноября 2018
git reset --hard

Это для того, чтобы вернуть все ваши локальные изменения в исходную головку

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