Ответ 1
git fetch origin
git reset --hard origin/master
У меня есть следующее сообщение в git:
# Your branch and 'origin/master' have diverged,
# and have 3 and 8 different commits each, respectively.
# (use "git pull" to merge the remote branch into yours)
Я хотел бы выбросить 3 локальных коммита и вытащить 8 удаленных коммитов в origin/master.
(Слияние будет слишком сложным, я предпочел бы сделать 3 локальных фиксации снова, если мастер обновлен.)
Как я могу это сделать?
git fetch origin
git reset --hard origin/master
Чтобы сохранить ваши старые фиксации на временной ветке, если они вам понадобятся:
git branch temp
Затем переключитесь на новый мастер
git fetch origin
git reset --hard origin/master
Попробуйте сделать это, чтобы снести ваши локальные коммиты:
git reset --hard HEAD~4
В качестве альтернативы слиянию вы можете переустановить ветвь функции на главную ветку, используя следующие команды:
git checkout feature
git rebase master
Если жесткий reset не режет его для вас, и вы не хотите делать слияние, вы можете выбросить свои локальные нежелательные изменения, удалив локальную ветвь и повторно загрузив исходный код:
git branch -D <local branch>
git checkout -b <branch name> origin/<branch name>
Используя master
в качестве примера:
git branch -D master
git checkout -b master origin/master
Чтобы удалить свой последний локальный коммит, используйте следующее:
git reset HEAD^
Это вернет заголовок в состояние, предшествующее фиксации, и позволит вам git pull
от master. Убедитесь, что вы сохранили все свои изменения в другом месте (локально) перед извлечением из удаленного репозитория.
Чтобы иметь возможность тянуть без конфликтов, используйте git stash
, а затем git pull
.